哪个社区版图数据库支持高可用群集并具有良好的在线查询性能?

时间:2016-11-11 06:36:58

标签: graph-databases

我目前正在为电子商务公司构建知识图,它主要包括产品类别层次结构,属性和它们之间的关系。除了常见的关系查询,我们非常关注以下几点:

  1. 主从群集支持。此图表数据库将用于在线搜索查询处理,因此高可用性对我们至关重要。数据量不会像数百万个节点那么大,所以我们不需要可以跨多台机器跨越数据的分布式集群,而是我们可能需要同时读取多台机器,而且服务不会去即使其中一台机器处于离线状态,也会停机。

  2. 快速在线查询效果。关系的推理可以离线完成,因此性能并不重要。但我们需要做很多在线查询,比如“查找属性P等于V值的节点”,因此我们需要在线查询处理的良好性能。该数据库将是读取密集型的,并且在初始化后不会发生太大变化。

  3. 社区和文档。由于我们的团队对图形数据库领域并不陌生,因此我们希望有一个用户友好的部署和开发文档,以及用于解决问题的活跃社区。

  4. 根据上述要求,我调查了一些候选人:

    1. Neo4j。我们首先尝试过Neo4j,因为它是该领域最受欢迎的,实际上我非常喜欢它,尤其是Cypher查询语言。但我们即将放弃它,因为社区版不支持任何类型的群集,目前我们没有预算来支付企业版。
    2. OrientDB。 OrientDB就像是市场上第二大受欢迎的产品,而似乎在其社区版中支持群集。我使用“似乎”这个词,因为它的网站上没有明确说明。任何人都可以清除这个吗? 此外,我发现了一篇关于OrientDB的非常负面的文章让我非常犹豫:http://orientdbleaks.blogspot.jp/2015/06/the-orientdb-issues-that-made-us-give-up.html

    3. Titan。 Titan也很棒但是由于其最初的公司已经被收购,并且它的原始开发商正在开发不同的产品,它的未来发展和维护是有疑问的。

    4. ArangoDB。根据性能报告(https://www.arangodb.com/2015/10/benchmark-postgresql-mongodb-arangodb/),这个似乎非常快,但我不知道它的在线查询处理能力是否足够好,以及它对群集的支持也不为我所知。
    5. 至于文档和社区,我真的不知道,因为这些是你开始做之后才会知道的事情。

      总而言之,根据我的要求,我认为OrientDB和ArangoDB可能是我的候选人,但由于我上面提到的要点,我不知道选择哪一个。或者也许还有其他任何我缺席的优秀候选人?

      感谢。

3 个答案:

答案 0 :(得分:6)

Max在这里为ArangoDB工作。 ArangoDB不仅可以对图形进行在线查询,而且由于其多模型特性,您可以将图形查询与文档查询(使用二级索引),键查找和连接混合使用。它有一个复杂的查询引擎,带有一个完全了解ArangoDB集群结构的优化器,可以在所有实例中优化和分发查询执行。

在群集中,分片,同步复制和自我修复都是全自动的,具有可配置的参数。在Apache Mesos或DC / OS上部署ArangoDB集群特别简单(两次点击),但与其他编排框架相比也相对简单。 DC / OS上的ArangoDB还允许您通过图形用户界面或REST API调用进行向上和向下扩展,并自动替换失败的任务。

至于性能,我们所有的基准测试都表现出非常好的性能,刚刚发布的3.1版本甚至还有以顶点为中心的索引,这对于图形查询尤为重要。

我们会尽力提供您在https://www.arangodb.com/documentation/找到的大量文档。我们有一个用户手册,一个用于查询语言AQL的手册以及一个用于HTTP / REST API的手册。此外,我们还有教程,常见问题,标准任务的“Cookbook”,我们尝试及时回答StackOverflow和github问题。

所有这些都包含在Community Edition中,该版本随Apache 2.0开源许可证一起提供。

如果您有更多问题,请随时联系我们的团队或亲自与我联系。

答案 1 :(得分:3)

OrientDB Community Edition是一个免费的开源软件,由开发人员社区构建,并在不断改进。 OrientDB社区不会禁用水平扩展,容错,群集,分片和复制等功能。

有关群集的更多信息,请查看OrientDB官方指南:http://orientdb.com/docs/last/Tutorial-Clusters.html

希望它有所帮助。

此致

答案 2 :(得分:2)

Neo4j企业版可以在AGPL许可下使用。我很惊讶很多人都没有意识到这一点。如果您使用Neo4j Enterprise作为服务器并通过REST或bolt协议(Apache Licensed)与它通信,那么您不必担心在AGPL下发布连接到它的系统的代码。

如果您使用它嵌入式,那么您要遵守AGPL,但那么为什么在这种情况下您需要Neo4j企业?

如果您计划在AGPL下使用它,请记得从github克隆并编译Neo4j Enterprise,不要下载试用版。

Neo Technology提供了很好的支持,这正是您为企业订阅付出的代价。