欢迎关注文章系列,一起学习
《提升能力,涨薪可待篇》
《面试知识,工作可待篇》
《实战演练,拒绝996篇》
也欢迎关注微信公众号【Ccww笔记】,原创技术文章第一时间推出
如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗!
前言
你和任何一个陌生人之间所间隔的人不会超过六个
即最多通过6个中间人你就能够认识任何一个陌生人
对于一个社交网络APP,一定会存在着错综复杂的用户关系以及用户属性,在数据库表的设计中除了要存储每个用户的姓名、性别、喜好这些基本信息外,还需要存储一个用户和哪些用户是朋友 ,和哪些用户是亲人等这些关系数据的用户关系,那Neo4j图数据库就该出场了。
那Neo4j图数据库是什么呢?
Neo4j是一个高性能的,NOSQL数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事物特性的java持久化引擎。Neo4j也可以看作是一个高性能的图引擎,该引擎具有成熟数据库所有特性。
Neo4j图数据库适用的场景
- 社交媒体和社交网络图: 以Neo4j图形数据库为基础,社交网络APP可以轻松处理社交关系或根据活动推断关系。
- 知识图谱: 基于Neo4j数据类型以及图形的强大搜索功能, 由知识点之间的关系建立知识图,帮助用户搜索到关联的知识 。
- 反欺诈多维关联分析: 通过图分析可以清楚的知道洗钱网络及相关嫌疑,例如对用户所使用的账号、发生交易时的IP地址、MAC地址、手机IMEI号等进行关联分析
- 企业关系图谱: 企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过Neo4j的企业数据图谱来查询,层层挖掘信息。
- 推荐:基于Neo4j的优势进行个性化推荐, 通过分析用户有哪些朋友、用户朋友喜好的产品、用户的浏览记录等关系信息推测用户的喜好进而为用户推荐商品
- ...
那为什么需要Neo4j图数据?
- 它很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 它非常容易地表示半结构化数据
- Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
- 使用简单而强大的数据模型
- 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
那Neo4j怎么存储错综复杂的用户关系?
Neo4j图数据库遵循属性图模型来存储和管理其数据 ,其中属性图模型规则
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示。
- 关系具有方向:单向和双向。
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
在属性图数据模型中,关系应该是定向的, 关系也应该是有方向性的
Neo4j使用本机GPE(图形处理引擎)引擎来使用它的本机图存储格式
属性图模型 主要构建块
- 节点:图表的基本单位。 它包含具有键值对的属性
- 关系: 连接两个节点 , 每个关系包含一个起始节点和一个结束节点 , 关系也可以包含属性作为键值对
- 属性:用于描述图节点和关系的键值对
- 标签 : Label将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签
数据浏览器 :一旦我们安装Neo4j,我们可以访问Neo4j数据浏览器使用以下URL
http:// localhost:7474 / browser /
使用圆圈表示节点。 使用箭头的关系。 关系是有方向性的。 我们可以用Properties(键值对)来表示Node的数据。
在上图中,社交网络图包含为“人”的数据节点,分别代表五个用户。每个数据节点还包含人的基本属性信息等等,用于表示两个用户的基本信息,就如同常规数据库中的两行数据。
每两个数据节点之间关系数据,如Ccww与Ccww1的用户是父子关系。 利用这些关系数据,你就可以方便的作出基于关系的查询,这就是图数据库的优势。
标签man和woman,可以为现有节点或关系创建新标签,也可以从现有节点或关系中删除现有标签, 两个节点之间的关系,也有一个标签 。
那么Neo4j操作命令呢?
Neo4j - CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言:
- 它是Neo4j图形数据库的查询语言。
- 它是一种声明性模式匹配语言
- 它遵循SQL语法。
它的语法是非常简单且人性化、可读的格式。
常用的Neo4j CQL命令
CQL命令/条 | 用法 |
---|---|
CREATE 创建 | 创建节点,关系和属性 |
MATCH 匹配 | 检索有关节点,关系和属性数据 |
RETURN 返回 | 返回查询结果 |
WHERE 哪里 | 提供条件过滤检索数据 |
DELETE 删除 | 删除节点和关系 |
REMOVE 移除 | 删除节点和关系的属性 |
ORDER BY以…排序 | 排序检索数据 |
SET 组 | 添加或更新标签 |
Neo4j CQL 函数
定制列表功能 | 用法 |
---|---|
String 字符串 | 它们用于使用String字面量。 |
Aggregation 聚合 | 它们用于对CQL查询结果执行一些聚合操作。 |
Relationship 关系 | 他们用于获取关系的细节,如startnode,endnode等。 |
Neo4j CQL数据类型
CQL数据类型 | 用法 |
---|---|
boolean | 用于表示布尔文字:true,false。 |
byte | 用于表示8位整数。 |
short | 用于表示16位整数。 |
int | 用于表示32位整数。 |
long | 用于表示64位整数。 |
float | I用于表示32位浮点数。 |
double | 用于表示64位浮点数。 |
char | 用于表示16位字符。 |
String | 用于表示字符串。 |
往期文章:
各位看官还可以吗?喜欢的话,动动手指点个赞💗,点个关注呗!!谢谢支持!
也欢迎关注公众号【Ccww笔记】,原创技术文章第一时间推出
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。