Neo4j高级应用
1. CQL函数1.1 字符串函数MATCH (p:Person) RETURN ID(p),LOWER(p.character)match(p:Person) return p.character,lower(p.character),p.name,substring(p.name,2),replace(p.name,"子","z i")
1.2 聚合函数MATCH (p:Person) RETURN MAX(p.money),SUM(p.money)
1.3 关系函数match p = (:Person {name:"林婉儿"})-[r:Couple]-(:Person)
RETURN STARTNODE(r)
1.4 shortestPath函数返回最短的pathMATCH p=shortestPath((node1)-[*]-(node2)) RETURN length(p), nodes(p)
MATCH p=shortestPath((person:Person {name:"王启年"})-[*]-(person2:Person {name:"九品射手燕小乙"})) RE ...
图和Neo4j
1.图论1.1 图论起源—-柯尼斯堡(Konigsberg)七桥问题众所周知,图论起源于一个非常经典的问题——柯尼斯堡(Konigsberg)七桥问题。1738年,瑞典数学家欧拉( Leornhard Euler)解决了柯尼斯堡七桥问题。由此图论诞生,欧拉也成为图论的创始人。
欧拉把问题的实质归于”一笔画”问题,即判断一个图是否能够遍历完所有的边(Edge)而没有重复,而柯尼斯堡七桥问题则是一笔画问题的一个具体情境。欧拉证明这个问题不成立。满足一笔画的图满足两个条件:
图必须是一个完整图
有零个或二个奇数点1.2 图 和 节点图是一组节点和连接这些节点的关系组成。图形数据存储在节点和关系所在的属性上。属性是键值对表示的数据。在图形理论中,我们可以使用圆表示一个节点 并且可以向里面添加键值对形式的数据。
1.3 节点关系表达简单关系表达此处在两个节点之间创建关系名称“跟随”。 这意味着Profifile1跟随Profifile2。复杂关系表达这里节点用关系连接。 关系是单向或双向的。
从ABC和XYZ的关系是单向关系。
从ABC和PQR的关系是双向关系。
1.4属性图模型规则 ...
MongoDB集群高可用
1. MongoDB主从复制架构原理和缺陷master-slave架构中master节点负责数据的读写,slave没有写入权限只负责读取数据。
在主从结构中,主节点的操作记录成为oplog(operation log)。oplog存储在系统数据库local的oplog.$main集合中,这个集合的每个文档都代表主节点上执行的一个操作。从服务器会定期从主服务器中获取oplog记录,然后在本机上执行!对于存储oplog的集合,MongoDB采用的是固定集合,也就是说随着操作过多,新的操作会覆盖旧的操作!
主从结构没有自动故障转移功能,需要指定master和slave端,不推荐在生产中使用。mongodb4.0后不再支持主从复制![main] Master/slave replication is no longer supported
2. 复制集replica sets2.1 什么是复制集
复制集是由一组拥有相同数据集的mongod实例做组成的集群。复制集是一个集群,它是2台及2台以上的服务器组成,以及复制集成员包括Primary主节点,secondary从节点和投票节点。复制集提供了 ...
MongoDB安全认证
1 安全认证概述MongoDB 默认是没有账号的,可以直接连接,无须身份验证。实际项目中肯定是要权限验证的,否则 后果不堪设想。从2016年开始 发生了多起MongoDB黑客赎金事件,大部分MongoDB安全问题 暴露出 了安全问题的短板其实是用户,首先用户对于数据库的安全不重视,其次用户在使用过程中可能没有养 成定期备份的好习惯,最后是企业可能缺乏有经验和技术的专业人员。所以对MongoDB进行安全认证 是必须要做的。
2 用户相关操作2.1 切换到admin数据库对用户的操作use admin;db.createUser(userDocument):用于创建 MongoDB 登录用户以及分配权限的方法
db.createUser(
{
user: "账号",
pwd: "密码",
roles: [
{
role: "角色",
db: "安全认证的数据库"
},
{
role: "角色",
db: "安全认证的数据库"
}
...
MongoDB应用
1. MongoDB体系结构1.1 NoSQL 和 MongoDBNoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高, 不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵 活。NoSQL数据库四大家族列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,文档存储 MongoDBMongoDB 是一个基于分布式文件存储的数据库,由 C++ 编写,可以为 WEB 应用提供可扩展、 高性能、易部署的数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、 最像关系数据库的。在高负载的情况下,通过添加更多的节点,可以保证服务器性能。
1.2 MongoDB 体系结构
1.3 MongoDB 和RDBMS(关系型数据库)对比
1.4 什么是BSONBSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文 档对象和数组对象,但是BSON有JSON没有 ...
MongoDB架构
1. MongoDB逻辑结构
MongoDB 与 MySQL 中的架构相差不多,底层都使用了可插拔的存储引擎以满足用户的不同需要。用户可以根据程序的数据特征选择不同的存储引擎,在最新版本的 MongoDB 中使用了 WiredTiger 作为默 认的存储引擎,WiredTiger 提供了不同粒度的并发控制和压缩机制,能够为不同种类的应用提供了最 好的性能和存储率。
在存储引擎上层的就是 MongoDB 的数据模型和查询语言了,由于 MongoDB 对数据的存储与 RDBMS有较大的差异,所以它创建了一套不同的数据模型和查询语言。
2. MongoDB的数据模型2.1 描述数据模型内嵌 内嵌的方式指的是把相关联的数据保存在同一个文档结构之中。MongoDB的文档结构允许一个字段或者一个数组内的值作为一个嵌套的文档。引用 引用方式通过存储数据引用信息来实现两个不同文档之间的关联,应用程序可以通过解析这些数据引用来访问相关数据。
2.2 如何选择数据模型选择内嵌:
数据对象之间有包含关系 ,一般是数据对象之间有一对多或者一对一的关系 。
需要经常一起读取的数据。
有 map-r ...
ElasticSearch之搜索实战
第1节 案例需求
MySQL中的数据批量导入到ES中, 然后进行搜索职位信息 展示出职位的信息。
第2节 代码实现1.项目准备1)数据库准备 — 执行 position.sql 脚本/*
SQLyog Ultimate v12.09 (64 bit)
MySQL - 5.7.31 : Database - lagou_position
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MO ...
ElasticSearch之深度应用及原理剖析
第1节 索引文档写入和近实时搜索原理1.1 基本概念Segments in Lucene众所周知,Elasticsearch 存储的基本单元是 shard , ES 中一个 Index 可能分为多个 shard, 事实上每个 shard 都是一个 Lucence 的 Index,并且每个 Lucence Index 由多个 Segment 组成, 每个Segment 事实上是一些倒排索引的集合, 每次创建一个新的 Document , 都会归属于一个新的Segment, 而不会去修改原来的 Segment 。且每次的文档删除操作,会仅仅标记 Segment 中该文档为删除状态, 而不会真正的立马物理删除, 所以说 ES 的 index 可以理解为一个抽象的概念。 就像下图所示:
Commits in LuceneCommit 操作意味着将 Segment 合并,并写入磁盘。保证内存数据尽量不丢。但刷盘是很重的 IO 操作, 所以为了机器性能和近实时搜索, 并不会刷盘那么及时。
Translog新文档被索引意味着文档会被首先写入内存 buffer 和 translog 文件。每个 sh ...
ElasticSearch之入门使用
Elasticsearch是基于Lucene的全文检索引擎,本质也是存储和检索数据。ES中的很多概念与MySQL类似 我们可以按照关系型数据库的经验去理解。
1. 核心概念
索引(index)
类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以理解成一个关系型数据库。
类型(type)
代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。注意ES每个大版本之间区别很大:ES 5.x中一个index可以有多种type。ES 6.x中一个index只能有一种type。ES 7.x以后 要逐渐移除type这个概念。
映射(mapping)
mapping定义了每个字段的类型等信息。相当于关系型数据库中的表结构。常用数据类型:text、keyword、number、array、range、boolean、date、geo_point、ip、 nested、objecthttps://www.elastic.co/guide/en/elasticsearch/reference/cur ...
ElasticSearch基础
1. Elasticsearch简介Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储、检索数据。本身扩展性很好,可扩展到上百台服务器,处理PB级别的数据。ES使用Java开发并使用Lucene作为其核心来实现索引和搜索的功能,但是它通过简单的RestfulAPI和javaAPI来隐藏Lucene的复杂性,从而让全文搜索变得简单。Elasticsearch官网:https://www.elastic.co/cn/products/elasticsearch
2. Elasticsearch的功能
分布式的搜索引擎
分布式:Elasticsearch自动将海量数据分散到多台服务器上去存储和检索搜索:百度、谷歌,站内搜索
全文检索
提供模糊搜索等自动度很高的查询方式,并进行相关性排名,高亮等功能
数据分析引擎(分组聚合)
电商网站,最近一周笔记本电脑这种商品销量排名top10的商家有哪些?新闻网站,最近1个月访问量排名top3的新闻板块是哪些
对海量数据进行近实时的处理
海量数据的处理:因为是分布式架构,Elasticse ...
ElasticSearch高级应用
1. 映射高级1.1 地理坐标点数据类型
地理坐标点
地理坐标点是指地球表面可以用经纬度描述的一个点。 地理坐标点可以用来计算两个坐标间的距离,还可以判断一个坐标是否在一个区域中。地理坐标点需要显式声明对应字段类型为 geo_point :PUT /company-locations
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"location": {
"type": "geo_point"
}
}
}
}
经纬度坐标格式
如上例, location 字段被声明为 geo_point 后,我们就可以索引包含了经纬度信息的文档了。 经纬度信息的形式可以是字符串、数组或者对象# 字符串形式
PUT /company-locations/_doc/1
{
"name":"NetEase",
"location":"40.715,74.011"
}
# 对 ...
ElasticSearch之企业级高可用分布式集群
第1节 核心概念
集群(Cluster)
一个Elasticsearch集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 。
节点(Node)
一个Elasticsearch实例即一个Node,一台机器可以有多个实例,正常使用下每个实例都应该会部署在不同的机器上。Elasticsearch的配置文件中可以通过node.master、node.data来设置节点类型。
node.master:表示节点是否具有成为主节点的资格 。
true代表的是有资格竞选主节点。
false代表的是没有资格竞选主节点 。
node.data:表示节点是否存储数据。
Node节点组合
主节点+数据节点(master+data) 默认。
节点既有成为主节点的资格,又存储数据。node.master: true
node.data: true
数据节点(data)
节点没有成为主节点的资格,不参与选举,只会存储数据。node.master: false
node.data: true
客户端节点(client)
不会成为主节点,也不会存储数 ...