不幸的是,您的基本要求已经扩展了当今对图表的一般理解——即使在学术界也是如此。没有列出的纯图形数据库能够满足您的所有需求。知道大型分布式但互连图的分布式图算法仍然是一个很大的研究问题。因此,对于您的应用程序,最好找到一个匹配良好的图形数据库、图形处理堆栈或 RDF-Store,并自行实现缺少的部分。当您的应用程序主要是在线事务图处理(OLTP)(读/写繁重)并专注于顶点时,您可以暂时放弃分布式算法,然后使用其中之一:
- Neo4j
- 东方数据库
- 敏捷
- 超图数据库
- 无限图
- 信息网格
- 微软霍顿
当它更多的是在线分析处理(OLAP)(主要是阅读)时,仍然关注顶点和分布真的很重要:
- Apache Hama(早期项目)
- 微软三位一体(研究项目)
- Golden Orb(很好,但仅限 Java)
- Signal/Collect (http://www.ifi.uzh.ch/ddis/research/sc ,不过是一个研究项目)
或者它是否更关注边缘、逻辑推理/模式匹配,您需要或更好地使用边缘级别的分布,例如语义 Web,然后使用以下 RDF-/Triple-/Quadstores 之一:
- AllegroGraph(好吧,它们是一个 graphdb/rdf 存储混合体;)
- 耶拿
- 芝麻
- 星际狗
- 演奏家
- ...以及更多 RDF 商店
好的起点可能是 DEX 或 Neo4j:如果您正在为 C++ DEX 寻找一个好的且非常快速的 graphdb 内核可能是最好的,但您必须自己实现很多网络和分发的东西。Neo4j 有很多分布和容错性,但目前更多的是顶点分片级别,它的内核是 Java。对于实现分布式图算法的想法和灵感,可以看看 Golden Orb 和 Signal/Collect。另一种方法可能是从 AllegroGraph 或 Stardog 开始。尤其是 AllegroGraph 在开始时可能会有点棘手,直到您接受他们的思维方式。Stardog 还很年轻,Java,但速度很快,已经相当成熟。