精通Neo4j
上QQ阅读APP看书,第一时间看更新

1.5 Neo4j概述

Neo4j是一个用Java实现的开源NoSQL图数据库。自2003年开始研发,直到2007年正式发布第一版。Neo4j的源代码托管在GitHub上,技术支持托管在Stack Overflow和Neo4j Google讨论组上。Neo4j如今已经被各种行业的数十万家公司和组织采用。Neo4j的使用案例涵盖了网络管理、软件分析、科学研究、路由分析、组织和项目管理、决策制定、社交网络等诸多方面。

Neo4j实现了专业数据库级别的图数据模型的存储。与普通的图处理或内存数据库不同,Neo4j提供了完整的数据库特性,包括ACID事务的支持、集群支持、备份与故障转移等,这使其适合于企业级生产环境下的各种应用。

另外,Neo4j一些特殊功能使得Neo4j在用户、开发人员和DBA中非常受欢迎(见图1-15)。

● 擅于处理关系:Neo4j自底向上构建成一个图数据库。它的体系结构旨在优化快速管理、存储和遍历节点和关系。在Neo4j中,关系是数据库中最重要的元素,它代表节点之间的相互联系。众所周知,在关系数据库领域中,“关系”用于多个不同表之间的连接操作,这种操作的性能下降与关系的数量呈指数级别的,但在Neo4j中则是用于从一个节点指向另一个节点,其性能是线性级别的。

● 界面友好:Neo4j提供了一个查询与展示一体化的Web操作界面,能够非常形象地展示了数据模型的节点和关系。

● 声明式图查询语言:Cypher是一种声明式图数据库查询语言,它表现力丰富,查询效率高,其地位和作用与关系数据库中的SQL语言(Structured Query Language,结构化查询语言)类似。Cypher还具有良好的扩展性,用户可以定制自己的查询方式(如自定义过程)。

● ACID事务:Neo4j通过ACID事务提供真正的数据安全,Neo4j使用事务来保证数据在硬件故障或系统崩溃的情况下不会丢失。

● 高性能:Neo4j使用多副本主从复制的方式构建高可靠性集群,支持大数据集合并且可以不断扩展其容量,可存储数百万亿个实体。也就是说,Neo4j可部署在一个可容错、可扩展的集群上。此外,Neo4j还提供热备份和性能监控功能。

● 代码开源:Neo4j将源代码公布到GitHub,任何人都可以去Neo4j的GitHub主页下载源代码。

图1-15 Neo4j支持的特性

当然,传统的关系数据库经过长期的发展,其特性、性能已经被企业级应用认可,并且新兴的其他NoSQL数据库也越来越多地被使用在企业级项目的数据存储解决方案中;那么Neo4j这种图数据库与关系数据库、NoSQL数据库对比,其优势是什么呢?Neo4j与其他数据库的对比情况如表1-4所示。

表1-4 Neo4j与其他数据库的对比