5
欢迎关注文章系列,一起学习
《提升能力,涨薪可待篇》
《面试知识,工作可待篇》
《实战演练,拒绝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位整数。
floatI用于表示32位浮点数。
double用于表示64位浮点数。
char用于表示16位字符。
String用于表示字符串。

往期文章:

各位看官还可以吗?喜欢的话,动动手指点个赞💗,点个关注呗!!谢谢支持!
也欢迎关注公众号【Ccww笔记】,原创技术文章第一时间推出


Ccww
943 声望490 粉丝