图数据库简介
图数据库解决了我们许多人每天都在应对的巨大挑战。现代数据问题通常涉及与异构数据的多对多关系,需要:
- 导航深层层次结构,
- 寻找远距离物品之间的隐藏联系,以及
- 发现项目之间的相互关系。
什么是Neo4j
Neo4j 是一个开源的 NoSQL 原生图形数据库,它为您的应用程序提供符合 ACID 的事务后端,自 2007 年以来一直公开可用。
Neo4j 是一个原生图形数据库,这意味着它实现了一个真正的图形模型,一直到存储级别。数据不会作为“图形抽象”存储在另一种技术之上,它就像您在白板上一样存储。这很重要,因为这就是 Neo4j 优于其他图表并保持如此灵活的原因。除了核心图之外,Neo4j 还提供了您对数据库的期望;ACID 事务、集群支持和运行时故障转移。这种稳定性和成熟度是它多年来一直用于大型企业工作负载的生产场景的原因。
- 是世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理;
- 采用属性图模型(Property graph model),极大的完善和丰富图数据模型;
- 专属查询语言 Cypher,直观,高效;
RDBMS到图数据库
关系模型:
人员、关系和部门表:
图表 - Alice 和 3 个部门作为节点:
SQL 查询与 Cypher 查询有何不同的简短示例,列出 IT 部门员工
SQL语句:
SELECT name FROM Person
LEFT JOIN Person_Department
ON Person.Id = Person_Department.PersonId
LEFT JOIN Department
ON Department.Id = Person_Department.DepartmentId
WHERE Department.name = "IT Department"
Cypher语句:
MATCH (p:Person)-[:WORKS_AT]->(d:Dept)
WHERE d.name = "IT Department"
RETURN p.name
NoSQL到图数据库
统称为聚合存储( Martin Fowler创造的术语)的 NoSQL 数据库组包括键值存储、宽列存储和文档存储,它们都在下面以蓝色突出显示
聚合存储擅长存储大量离散数据,但它们通过牺牲用于处理数据关系的数据模型、语言和功能来做到这一点。图
Neo4j图数据概念
Neo4j 属性图数据库模型包括:
- 节点描述域的实体(离散对象)
- 节点可以有零个或多个标签来定义(分类)它们是什么类型的节点
- 关系描述了源节点和目标节点之间的连接。
- 关系总是有一个方向(一个方向)
- 关系必须有一个类型(一种类型)来定义(分类)它们是什么类型的关系
- 节点和关系可以具有进一步描述它们的属性(键值对)
在数学中,图论是对图的研究。
在图论中:
- 节点也称为顶点或点。
- 关系也称为边、链接或线。
CREATE (:Person:Actor {name: 'Tom Hanks', born: 1956})
-[:ACTED_IN {roles: ['Forrest']
->(:Movie {title: 'Forrest Gump'})
<-[:DIRECTED]-(:Person {name: 'Robert Zemeckis', born: 1951})