Neo4j是世界上领先的图数据库,它开始就是为了图数据库而建立的,即它的架构就是设计为快速的管理,存储和遍历节点和关系,在这其中,关系为Neo4j里面最重要的部分。
在传统的关系型数据库,JOIN操作的性能会随着成倍的关系查找而成倍的降低,但是在Neo4j对应的操作只是从一个节点导航到另一个节点,它的性能是一条直线。
这两者不同的存储和查询方式为neo4j提供了每秒核接近400W的遍历性能。由于图数据查找大多都是由一个节点查询它的关联的大量的邻节点,所以数据库中存储的数据总量对查询时间并不会造成影响。专用的内存管理,高扩展,快速的内存的操作,都对整个操作有益。
图的属性也是非常友好的,这就意味着,通过Neo4j的可选模式模型,给我们提供了我们一直使用的相同的架构构想,设计,试试,存储和可视化。一个最主要的益处就是它允许所有的利益相关者参与整个项目开发周期,特别是域模式可以一直随着需求的变更的变化,这就避免了模式改变和迁移造成的大量的花销。
Cypher, 一个声明式的图查询语言,设计为直观的展示节点和关系的图形模式。这个高可用且易读的语言是以特定的领域和问题为中心的模式。Cypher也可以扩展为特定的用例的窄优化。
作为敏感的紧凑型存储数据库,Neo4j可以为万亿级别的大数据集实体提供存储。作为生产环境,它可以部署为可扩展的,高容错的集群机器。由于它的高可扩展性,neo4j只需要几十台机器,而不是几百上千台,节省成本和减少操作的复杂性。其他的生产环境应用特性包括热备份,密集监控。
1.1 版本
1.1.1 社区版 社区版是一个neo4j的全功能版本,适合单实例的部署。它只是所有的关键性特性,例如, ACID规则,Cypher,可编程性API。主要用于neo4j的学习、个人项目、小团队项目。
1.1.2 专业版 专业版扩展了社区版的功能,包括社区版主要特性的性能和扩展性,比如说高可用,在线热备的集群架构功能。特别还有安全特性包括角色级别的登录控制,支持LDAP协议,比如说,活动的目录,它是高可用,可扩展的生产环境系统的选择,诸如商业解决方案和关键内部方案。
1.1.3 特性细节 表1.1 特性
特性 | 社区版 | 专业版 |
---|---|---|
标签属性图模型 | ✔ | ✔ |
原生图存储&处理 | ✔ | ✔ |
ACID事务 | ✔ | ✔ |
Cypher图查询语言 | ✔ | ✔ |
Neo4j浏览器语法高亮显示 | ✔ | ✔ |
Bolt二进制协议 | ✔ | ✔ |
C#, Java, JavaScript & Python 语言驱动 | ✔ | ✔ |
高性能本地API | ✔ | ✔ |
高性能缓存 | ✔ | ✔ |
基于成本的优化器 | ✔ | ✔ |
图算法库支持AI协议 | ✔ | ✔ |
高速写和本地标签索引 | ✔ | ✔ |
Composite indexes(综合索引?) | ✔ | ✔ |
Slotted and Compiled Cypher runtimes 运行时编译和跟踪 Cypher | - | ✔ |
Property-existence constraints 属性-存在约束 | - | ✔ |
Node Key schema constraints 节点键模式约束 | - | ✔ |
Listing and terminating running queries 列出和终止运行的语句 | - | ✔ |
Auto-reuse of space 自动重用空间 | - | ✔ |
Role-based access control 角色级别的访问控制 | - | ✔ |
Subgraph access control 子图的访问控制 | - | ✔ |
Property-level security 属性级别的安全 | - | ✔ |
LDAP and Active Directory integration 集成LDAP和活动目录 | - | ✔ |
Kerberos security option Kerberos 安全性选项 | - | ✔ |
表1.2 性能和扩展性
版本 | 社区版 | 专业版 |
---|---|---|
Causal Clustering for global scale applications | - | ✔ |
多集群 | - | ✔ |
Enterprise lock manager accesses all cores on server | - | ✔ |
Intra-cluster encryption | - | ✔ |
Offline backups | ✔ | ✔ |
Online backups | - | ✔ |
Encrypted backups | - | ✔ |
Rolling upgrades | - | ✔ |
Automatic cache warming | - | ✔ |
Routing and load balancing with Neo4j Drivers | - | ✔ |
Advanced monitoring | - | ✔ |
Graph size limitations | 34B nodes, 34B relationships, 68B properties | No limit |
Bulk import tool | ✔ | ✔ |
Bulk import tool, resumable | - | ✔ |