你知道Neo4j这是什么数据库吗?有什么用呢?

2,585 阅读6分钟

欢迎关注公众号【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技术博客】,原创技术文章第一时间推出