什么是图数据库(graph database)
图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据。
什么是Neo4j
Neo4j是一个开源的NoSQL图形数据库,2003年开始开发,使用scala和java语言,2007年开始发布。
- 是世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理
- 采用属性图模型(Property graph model),极大地完善和丰富图数据模型
- 专属查询语言Cypher,直观。高效
属性图模型
Neo4j图数据库遵循属性图模型来存储和管理其数据
属性图模型规则:
- 表示节点,关系和属性中的数据
- 节点和关系都包含属性
- 关系连接节点
- 属性是键值对
- 节点用圆圈表示,关系用方向键表示
- 关系具有方向:单向和双向
- 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
在属性图数据模型中,关系应该是定向的。
Neo4j图数据库将其所有数据存储在节点和关系中,我们不需要任何额外的RDBMS数据库或NoSQL数据库来存储Neo4j数据库数据,它以图的形式存储数据,Neo4j使用本机GRE(图形处理引擎)来使用它的本机图存储格式
图数据库模型的主要构建块是:- 节点
- 关系
- 属性
简单的属性图的例子:
Neo4j的构建元素
Neo4j图数据库主要有以下构建元素:
- 节点
- 属性
- 关系
- 标签
- 数据浏览器
节点
节点(Node)是图数据库中的一个基本元素,用来表示一个实体记录,就像关系数据库中的一条记录一样。在Neo4j中节点可以包含多个属性(Properties)和多个标签(Label)
1. 节点是主要的数据元素
2. 节点通过关系连接到其他节点
3. 节点可以具有一个或多个属性(即,存储为键/值对的属性)
4. 节点有一个或多个标签。用于描述其在图表中的作用
属性
属性(Property)是用于描述图节点和关系的键值对,其中key是一个字符串,值可以通过使用任何Neo4j数据类型来表示
- 属性是命名值,其中名称(或键)是字符串
- 属性可以被索引和约束
- 可以从多个属性创建复合索引
关系
关系(Relationship)同样是图数据库的基本元素。当数据库中已经存在节点后,需要将节点连接起来构成图,关系就是用来连接两个节点,关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type)
- 关系连接两个节点
- 关系是方向性的
- 节点