简介
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。专属的查询语言Cyper。
Neo4j中的主要组成部分:节点(node),关系(relationship),属性(property),标签(label)
- 节点:一个图形的一个基本单元,表示一个实体
- 属性:节点和关系都可拥有属性,表示为一个键值对,键名为字符串,值可以是数字,布尔值,字节,字符串,字符串数组,日期。
- 关系:连接两个节点,包含一个开始节点和一个尾节点。
- 标签:Label将一个公共名称与一组节点或关系相关联。 节点或关系可以包含一个或多个标签。 我们可以为现有节点或关系创建新标签。 我们可以从现有节点或关系中删除现有标签。
特点
- 完整的ACID支持
- 高可用性
- 轻易扩展到上亿级别的节点和关系
- 通过遍历工具高速检索数据
关系查询性能对比
在数据与关系中心,图数据库查询速度方面非常高效,即使对于深度和复杂的查询也是如此。
在关系数据库(MySQL)和图数据库(Neo4j)之间进行实验,在一个社交网络找到最大深度为5的朋友,数据集包括100万人,每人约50个朋友,实验如下:
深度 | MySQL执行时间(s) | Neo4j执行时间(s) | 返回记录数 |
2 | 0.016 | 0.01 | -2500 |
3 | 30.267 | 0.168 | -110 000 |
4 | 1543.505 | 1.359 | -600 000 |
5 | 未完成 | 2.132 | -800 000 |
对比关系数据库
关系数据库 | 图数据库 |
表 | 图 |
行 | 节点 |
列和数据 | 属性和数据 |
约束 | 关系 |
应用场景
- 欺诈检测
- 实时推荐引擎
- 知识图谱
- 反洗钱
- 主数据管理
- 供应链管理
- 增强网络和IT运行管理能力
- 数据谱系
- 身份和访问管理
- 材料清单