一、什么是图数据库
图数据库是基于图论实现的一种
NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据图论是数学的一个分支,以图为研究对象。图论中的图是由若干给定的点以及连接两点的线所构成的图形,这种图形通常用来描述事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物之间具有这种关系。

图数据库相比关系型数据库的优势
在关系型数据库中,person-department的关系用外键表示
在图数据库中,用节点和关系取代表-外键-join

NoSQL数据库分类Neo4j是一个开源的NoSQL图形数据库,使用Scala和Java语言- 提供原生的图数据存储、检索和处理
- 采用属性图模型
- 专属查询语言
Cypher
Neo4j数据模型- 图论基础
- 图是一组节点和连接节点的关系,图形以属性的形式将数据存储在节点和关系中,属性是用于表示数据的键值对
- 在图论中,用圆代表一个单独的节点,节点之间的关系用箭头标记
- 可以使用节点表示个人资料,它本身不包含任何属性,可以为其添加属性
- 图论基础

2. 两个节点之间创建关系

1. 此处两个配置文件之间创建的关系名称为`Follow`,即`Profile-1 Follow Profile-2`
- 属性图模型
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示
- 关系具有方向:单向和双向
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
- 在属性图数据模型中,关系是定向的。如果尝试创建没有方向的关系,则会抛出错误。在
Neo4j中,关系也是具有方向性的 Neo4j图数据库将其所有数据存储在节点和关系中,不需要任何额外的RDBMS数据库或NoSQL数据库来存储数据。在本机中,Neo4j使用GPE图形处理引擎来使用其本机图存储格式Neo4j的构建元素
- 节点
- 用来表示一个实体记录,节点可以包含多个属性
Property和多个标签Label - 节点是主要的数据元素
- 节点通过关系连接其他节点
- 节点有一个或者多个标签,用于描述其在图表中的作用
- 用来表示一个实体记录,节点可以包含多个属性
- 关系
- 当数据库中存在节点后,需要将节点连接起来构成图,连接两个节点的线被称为关系,亦或是图的边。关系的始端和末端都必须是节点,不可空指向或是空起始
- 关系具有方向性
- 节点可以有一个或多个递归关系
- 关系可以有一个或多个属性
- 属性
- 用于描述图节点和关系的键值对,其中
key为字符串,值可以为任意的Neo4j数据类型 - 属性是命名值,其中名称
key为字符串 - 属性可以被索引和约束
- 可以从多个属性创建复合索引
- 用于描述图节点和关系的键值对,其中
- 标签
- 标签将一个公共的名称与一组节点相关联,节点或关系可以包含一个或多个标签,可以为现有节点或关系创建新标签,也可以删除现有标签
- 标签用于节点分组
- 一个节点可以具有多个标签
- 对标签进行索引可以加速在图中查找节点
- 本机标签索引针对速度进行了优化
- 数据浏览器
- 安装
Neo4j后就可以访问Neo4j数据浏览器简单的属性图示例

- 安装
Neo4j使用场景- 欺诈检测、谣言检测
- 实时推荐引擎
- 知识图谱
- 反洗钱
- 主数据管理
- 供应链
- 数据谱系
- 身份和访问管理
