Neo4j 是一个高性能的 NoSQL 图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎。
Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。
使用 Neo4j 时,程序员工作在一个面向对象的、灵活的网络结构下,而不是严格、静态的表中,但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Neo4j 因其具备的嵌入式、高性能、轻量级等优势,越来越受到人们的关注。
作为一款稳健的、可伸缩的高性能数据库,Neo4j 最适合完整的企业部署或者作为一个轻量级项目中完整服务器的子集存在。它包括如下几个显著特点。
适当的 ACID 操作是保证数据一致性的基础。Neo4j 确保了在一个事务里的多个操作同时发生,保证数据的一致性。
无论是采用嵌入模式还是多服务器集群部署,Neo4j 都支持这一特性。
可靠的图形存储可以非常轻松地集成到任何一个应用中。随着开发的应用在运营中不断发展, 性能问题肯定会逐步凸显出来,而无论应用如何变化,Neo4j 只会受到计算机硬件性能的影响, 而不受业务本身的约束。
部署一个 Neo4j 服务器可以承载亿级的节点和关系。当然,当单节点无法承载数据需求时,可以部署分布式集群。
图形数据库最大的优势是可以存储关系复杂的数据。通过 Neo4j 提供的遍历工具,可以非常高效地进行数据检索,每秒可以达到亿级的检索量。一个检索操作类似 RDBMS 里的连接 join 操作。
构成一张图的基本元素是节点和关系。在 Neo4j 中,节点和关系都可以包含属性,如下图所示。