有人尝试过Neo4j和Titan吗?它们的优缺点是什么?

63

请问有没有人能够提供或指出Neo4j和Titan之间的一个好的比较?其中一个区别在规模方面-Titan是可扩展的,需要像cassandra这样的底层可扩展数据存储。而Neo4j仅适用于HA,并拥有自己的嵌入式数据库。其他的优缺点呢?有任何具体的用例吗?(目前Titan正在使用吗?)

我还有以下链接:http://architects.dzone.com/articles/16-graph-databases-compared,它给出了关于图形数据库的客观比较,但是对于Neo4j和Titan之间的优缺点没有提到太多。


你可以看一下Titan vs Neo4j,这可能会对你有所帮助。 - Mohamed E. ManSour
2个回答

27

我们有一个社交图谱,在一天内添加了近100万个节点和两倍于此的边。我们最初选择了neo4j图形数据库,因为它非常快,原因是其存储在运行图形引擎的同一台机器上。但是以下是我们想与您分享的有关neo4j的经验。

  1. 不适合实时查询。 我们拥有类似Twitter的社交结构。我们必须展示用户时间轴上所关注的所有用户的最新20个动态(及其相关活动)。我们有一些用户关注超过1000个用户。我们为此编写的gremlin查询(如果您感兴趣,我们可以共享gremlin查询)真的产生了大量GC,导致一个拥有8个CPU和48GB RAM的服务器使用后会冻结,我们不得不重新启动服务器使其在线。
  2. 很多时候观察到网络分区。
  3. 没有顶点中心索引,这在图形数据库中非常必要。

最终,我们对使用gremlin查询的服务器性能感到非常疲惫,以至于我们不得不将数据库更改为titan。

在titan上,我们获得了合理的性能,并且由于我们使用cassandra作为后端存储,扩展性也非常容易。但是请注意,使用gremlin在这里也不是一个好主意,因为multi-get查询写起来非常丑陋,并且如果没有multi-get,则其查询变得非常缓慢。


2
嗨。我非常想了解您的设置。如果您能写一篇博客就太酷了。如果您更喜欢私下交流,我的 Twitter 或 Gmail 帐户是 sorenbs。 - sorenbs
2
为什么选择Gremlin而不是Cipher?这是在Neo 1.9还是2上进行的?只是好奇。 - Craig Brett
嗨,我们已经使用它超过一年了。它肯定不是2,可能是1.6或1.7。我记不清了。当时Cypher并不那么流行,还处于初级阶段。我现在认为Titan相对于Neo4j的主要优势是其可扩展性和提供多个顶点中心索引(VCI),在我们的情况下,这变得非常重要,因为我们通常有非常大的子集,没有VCI会变得非常缓慢。 - user2772346
1
同时,titan稳定需要一段时间,因为数据损坏的情况时有发生。虽然我们也曾在neo4j上观察到过数据损坏的情况,但由于我们拥有企业支持,他们通过一个补丁修复了它。 - user2772346
@user2772346,你是在说Neo4J不能扩展吗?有趣的是,扩展性是描述使用N4J的整个原因的重要词汇。 - RedactedProfile

17
很高兴看到您在探索图形数据库。我将讲一下有关您提问的Neo4j部分:
全球2000强中已有30多家公司在生产中使用Neo4j,应用范围广泛,其中许多甚至令我们感到惊讶!(而我们发明了属性图!)
客户的部分列表如下: www.neotechnology.com/customers Neo4j已经在24x7生产中运行了10年,尽管产品显然已经发生了重大变化,但它建立在非常坚实的基础上。
对于大多数转向图形数据库的公司(就我所知的Neo4j而言),这样做是因为:a)他们的RDBMS无法处理其连接查询需求的范围和规模;b)以图形而不是表格的方式对领域进行建模(社交、网络和数据中心管理、欺诈、投资组合、身份等)带来了巨大的便利和速度。
为了好玩,您可以在这里找到许多客户演讲,这些演讲来自今年在世界各大城市举行的四(即将五)个GraphConnect会议:

http://watch.neo4j.org/

"If you're in London, the last one will be held next week: http://www.graphconnect.com 以下是 Neo4j 技术背后的一些概述和客户案例。针对你提出的关于扩展性的问题,Neo4j 采用独特的架构设计,旨在通过允许水平扩容来最大化查询响应时间和查询可预测性,使每个实例都可以在不经过网络跳跃的情况下访问图形。如果需要更多的读取吞吐量,只需增加实例即可。事实证明,这种方法适用于95%以上的图形,包括一些生产客户,他们将超过一半的 Facebook 社交图形运行在单个 Neo4j 集群中,支持“始终开启”的全天候网站。"

www.neotechnology.com/neo4j-scales-for-the-enterprise/

世界上最大的邮政递送服务之一使用Neo4j进行其实时包裹路由。铁路正在构建基于Neo4j的路由系统。一些全球最大的客户正在使用它们进行人力资源和数据治理、备用路径路由、网络和数据中心管理、实时欺诈检测、生物信息学等。

Neo4j的Cypher查询语言是专门为属性图构建的唯一声明性查询语言。它汲取了我们13年的本地Java API(这是Blueprints的基础,其他一些图形数据库后来也采用了它)的所有经验教训,并将它们融入到下一代语言中。Cypher是学习图形和开发应用程序的好方法;如果您有特殊需求或重视“裸金属”性能(即亚毫秒级与单位数毫秒级之间的性能),则始终可以使用本机Java API。Neo4j从头开始构建以支持图形,并具有构建存储图形的图形存储引擎;不同于图形数据库生态系统中一些较新的添加,后者被构建为非图形数据库上的图形库,并受某些固有限制的影响。(例如,因为FlockDB基于MySQL,所以对于任何大于一个跳的内容仍然会非常缓慢。)

如果您需要更具体的帮助,请随时联系Neo团队。我们将非常乐意为您提供帮助!http://info.neotechnology.com/ContactUs.html

祝您好运!


1
谢谢Philip!目前来看,Neo4j已经足够满足我的需求,因此我已经开始使用它了。而且,我相信它应该能够很好地扩展和扩展自己。此外,我还看到Neo4j群集和备份对于小型创业公司(少于3名员工或100,000美元的收入)是免费的,这对我来说真的很棒。另外,我意识到Neo4j拥有更大的占用空间和粉丝追随者。我正在研究Titan,它似乎非常适合超大型图形,所以我提出了这篇文章。我相信对于像...这样的大型组织来说,它会非常有用。 - DevD
1
对于 Facebook 和 LinkedIn 这样的大型平台,拥有适当的水平扩展架构是至关重要的。但正如我所说,我不像其他人那么大,并且我几个月前开始使用 Neo4j,因此我不敢排除 Neo4j 在扩展方面的能力,并且我非常喜欢在 Neo4j 上工作。 - DevD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接