图形数据库属于NoSQL数据库四大类型之一,图形存储类产品中也以下列七种较为流行及常用: Neo4J, Infinite Graph, DEX, InfoGrid, HyperGraphDB, Trinity 以及AllegroGraph。
总体比较结果如下图的表格所示:每款产品似乎都支持高性能及分布式部署。 “1M”是指对应图形数据库可以支持100万个免费节点。 RDF图形可以被看作一种特殊属性的图形。由于超图形是目前图形格式中最常见的类型,因此支持超图形的数据库在理论上也应该会支持属性图形。
图形数据库对比表
Neo4J是当下人气最高的图形数据库。从名称我们就能看出Neo4J在设计上主要考虑到Java应用程序的实际需求,但它同时也支持Python。Neo4J属于开源项目,共有GPLv3社区版、高级版、企业版三种版本;后两者都以AGPLv3商业许可为基础。 更多内容请参见:http://neo4j.org/
InfiniteGraph 是一款由Objectivity公司推出的图形类数据库,该公司还推出过一款同名的对象类数据库。免费许可版本只能支持最高100万节点及边线总数。InfiniteGraph需要作为服务项目加以安装,这与以MySQL为代表的传统数据库颇为相似。InfiniteGraph借鉴了Objectivity/DB中的面向对象概念,因此其中的每一个节点及边线都算作一个对象。 更多内容请参见:http://www.infinitegraph.com/
DEX一直被形容为一款具备高性能及优秀可扩展性的图形类数据库,这对于NoSQL应用程序来说无疑拥有相当强的吸引力。其个人评估版本最多可支持100万个节点。目前最新的版本是4.2,同时支持Java及.Net编程。请注意,旧的4.1版本只支持Java,且无法与新版本相兼容。 更多内容请参见:http://sparsity-technologies.com/dex
InfoGrid一直标榜自己是一款“网页图形数据库”,也就是说它的某些功能主要面向网页应用程序。图五展示了InfoGrid的整体框架,而图形数据库在其中所扮演的似乎并不是主要组成部分。InfoGrid在OpenID项目中也拥有几款应用程序,该项目同样由Netmesh公司所支持。 更多内容请参见:http://infogrid.org/
HyperGraphDB是一套开源数据存储机制,并依托于BerkeleyDB数据库存在。HyperGraphDB的图形模型被称为直接式超图形。从数学角度来讲,超图形允许其一条边线指向两个以上的节点。HyperGraphDB在此基础上更进一步,允许一条边线指向其它边线,如此一来HyperGraphDB在概括性方面就大大超过了其它图形类数据库。 更多内容请参见:http://www.hypergraphdb.org/index
微软不久之前才刚刚携Trinity首个发布版本V0.1(只允许企业内网接入)加入角逐。根据介绍,Trinity是一款基于内存的图形存储机制,且具备丰富的数据库功能,其中包括高并行性联机查询处理、ACI事务支持等等。在图形处理方面,Trinity只为用户提供了C# API。 更多内容请参见:http://research.microsoft.com/en-us/projects/trinity/
AllegroGraph是一款老牌图形类数据库了,据称其负载“数十亿RDF(即资源描述框架)三元组仍可保持高性能”。尽管RDF三元组可以作为边线来处理,但AllegroGraph的原本设计意图是创建以RDF为中心的语义网络应用程序,并支持SPARQL、RDFS++以及Prolog等由包括Java程序在内的各类客户应用推衍得出的程序。AllegroGraph RDFStore免费版本支持最多5000万个三元组。 更多内容请参见:http://allegrograph.org/agraph/allegrograph/
哪款数据库能够胜出?哈哈,还是老答案,“取决于实际需求”。尽管对具备不同特点的产品进行排名总会惹来激烈的辩论,但有时我们还是需要做出这个“艰难的决定”:
- 如果大家需要存储RDF三元组,那么AllegroGraph是首选;
- 处理属性图,Neo4J与DEX是当仁不让的利器;
- 处理超图形,HyperGraphDB堪称行家。