Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图像中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上 可以处理数十亿节点/关系/属性的图像,可以扩展到多台机器并行运行。相对于关系数据库来说,图形数据库善于处理大量复杂、互连接、低结构化的数据,这些 数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统 RDBMS在查询时出现的性能衰退问题。通过围绕图形进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图形的数据量没有任何关系。此外,Neo4j还提供了非常快的图形算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。

Neo4j的核心JAR文件大约有440k,既有基于AGPLv3的开源版本,也有商业版本。如果在闭源软件中使用Neo4j则需要商业协议。Neo4j中的信息主要通过如下3个基本的构建块表示:

  1、Node(又叫做vertex)——从概念上来说,这类似于对象实例,拥有唯一的ID。

  2、Relationship(又叫做edge)——它连接了两个Node,此外还有方向和RelationshipType。

  3、Property(又叫做attribute)——他们是字符串类型的key/Object值对,Node与Relationship都有Property。

除了主要的Neo4j代码基以外,还有一个贡献者与用户所构成的社区和一个庞大的生态圈,这里列举出几个:

  1、扩展——jo4neo(Java Objects for Neo)、Gremlin(用于处理图形的编程语言)以及一个REST/JSON接口。

  2、框架集成——Grails、Griffon、Django以及Spring。

  3、语言绑定——JRuby、Python、Scala、PHP以及Clojure。

官方网站:http://neo4j.org/

09-18 18:15