Titan和Neo4j图形数据库有什么区别?

11

我曾经从事关系数据库的工作,但现在想学习图形数据库。我知道这两个都是图形数据库,请问这两者有什么区别?在它们之间应该选择哪一个呢?


5
好的,我会尽力进行翻译。以下是您所需的内容:网址:https://db-engines.com/en/system/Neo4j%3BTitan标题:Neo4j vs. Titan正文: Neo4j和Titan都是图形数据库管理系统,它们用于存储、检索和管理大量复杂的图形数据。Neo4j是一种基于Java的高性能图形数据库管理系统,具有良好的可扩展性和灵活性。它使用Cypher查询语言来查询和操作图形数据。Titan是一种开源的分布式图形数据库管理系统,支持多个后端存储和各种查询接口。它使用Gremlin查询语言来查询和操作图形数据。Neo4j和Titan在实现上有所不同,因此它们在性能、可扩展性和功能方面存在差异。选择哪种图形数据库要考虑到具体的应用场景和需求。 - Ashraful Islam
4个回答

23

一种方法是简单地选择一个数据库,比如你可以快速搜索发现Titan已被分叉为JanusGraph,在那里它得到了更积极的维护。在研究过程中,你可能还会发现其他开源图形数据库,例如OrientDbChronoGraphSqlg,以及商业替代品,例如Microsoft's CosmosDbDSE GraphIBM Graph。现在该怎么决定呢?

有一个图形框架将所有这些图形连接在一起,包括Neo4j/Titan(以及不止列出的这些):Apache TinkerPop。TinkerPop提供了一个抽象层,可以与不同的图形数据库和图处理器结合使用,从而允许将相同的代码用于不同的可配置后端。这种模式与SQL中的JDBC相当相似,有助于使您的代码供应商无关。

在做出选择之前,您可以尝试所有不同的支持的图形数据库,并且可以使用Gremlin Console进行此类原型开发/基准测试。通过这种方式,您将能够自我决定哪种方法最适合您的项目。

当我写到这篇文章的结尾时,我想起来我还没有直接回答你的问题。如果你刚开始学习图数据库并且只是对学习它感兴趣,那么我可能不会建议你从Titan/JanusGraph开始,因为它需要一些配置才能开始使用(如模式、后端选择等)。从TinkerGraph或Neo4j开始,使用Gremlin控制台尝试一些简单的图遍历,然后逐步深入。


Tinkerpop不像JDBC协议,更像是一个ORM(例如:Hibernate),它使用大多数图形数据库来实现Gremlin(并且每个图形数据库都不是Gremlin中心)。 - logisima
JDBC类比是一个完全可接受的方法,可以帮助传达TinkerPop如何促进开发图形应用程序的跨厂商方式。我并没有暗示TinkerPop是一种“标准”,仅仅是通过提到JDBC作为类比,我不确定您如何得出那个结论。您需要进一步解释您的推理,以说明TinkerPop就像ORM一样.... 我看不出它们之间的联系。 - stephen mallette

22

Titan最初由Aurelius支持,而Aurelius在2015年被DataStax收购。 这一举措旨在为DataStax提供Graph DB领域的快速入门,因为他们现在提供自己的“DSE Graph”企业产品。后来Titan被分叉(如前所述)成为JanusGraph

Titan / Janus的好处是它可以与其他现有的后端和搜索技术“可插拔”。 因此,它将与像Cassandra、HBase、Hadoop、Solr和ElasticSearch等内容相容。

缺点在于社区支持非常困难。Titan项目已被有效地终止,而Janus在DBEngines中的得分仅为0.23。这使它成为最受欢迎的16个图形数据库(总体排名第231位),相当低。

Neo4j由Neo Technology支持,并被视为Graph DB社区的领先者(当前得分为38.52,是第一个图形DB和第21个总体)。它是开源的,但受Neo Technologies控制,因此他们可以在开源和企业之间确定功能集的差异。

Neo4j的好处在于他们内置了很多教程和学习辅助工具,这是一个不错的用户友好型Web界面。他们的文档是一流的,易于阅读和搜索,并且在Stack Overflow上有相当大的追随者。

Neo4j浏览器截图:

enter image description here

Neo4j的缺点是某些功能(如集群)仅在企业版中可用。但如果您为一家不介意支付企业许可证费用的大公司工作,那可能并不是什么大问题。

一致性:Titan/Janus是“最终一致性”派别的一部分,而Neo4j旨在实现强一致性(特别是在因果群集场景下)。虽然在两者中都可以通过配置调整一致性,但Titan/Janus可能会依赖于您选择的可插拔后端(例如:通常使用HBase实现强一致性,而使用Cassandra则最终一致性)。

建议

如果您刚开始学习图形数据库和建模,那么使用Neo4j就没错了。只需下载/安装社区版,运行它,然后执行:play movies作为您的第一个命令(该教程将指导您加载、建模和查询电影关系)。

如果您已经有一些图形处理经验,并且不介意排除故障/搜索解决问题(例如如何为Thrift设置最大帧大小),那么您可以使用Titan做一些很酷的事情。

尝试一下,看哪个适合您。


19
有远超过两种的图形数据库,有几十种。话虽如此,市场占有率最高的是Neo4j和Titan/JanusGraph这两个。但是还有几十种其他的图形数据库,每一种都有不同的优点适用于特定的应用领域。话虽如此,我建议初学者不要过度深入研究所有的小众玩家,只需要从两种主流图形数据库中学习基本概念即可。
Neo4j是最成熟的,安装和文档封装最好,有大量的参考代码,并得到各种合作伙伴的支持。
Titan / JanusGraph 是次受欢迎的,因为它是免费/开源的,并且拥有非常强大的支持(例如IBM,Google,Hortonworks,AWS等)。然而,Titan项目的领导人被收购,冻结了Titan项目。但是社区将该项目分叉为JanusGraph。因此,虽然JanusGraph是一个新项目,但它实际上是相同的Titan代码,甚至比Titan获得了更广泛的行业支持。
与这两种图形数据库相关的是用于处理图形的语言。Neo4j使用其专有语言Cypher,而几乎所有其他人都使用Gremlin和TinkerPop开源工具集(它是Apache开源项目的一部分)。几乎所有的图形数据库,包括Neo4j,都支持Gremlin和TinkerPop。例如,您可以使用Cypher或Gremlin查询Neo4j,尽管Neo等一些专有图形数据库供应商将Gremlin作为二等公民来支持,这意味着您可以在(外部的)Gremlin控制台中使用Gremlin连接到Neo,但是无法在(非常好的)Neo4j控制台中使用Gremlin。
请注意,除了Titan / JanusGraph之外,许多图形数据库都支持Gremlin。一个非常有趣的新参与者是Microsoft的Azure Cosmos DB,它是一个托管的图形数据库,如果您已经使用Azure,则“便宜且易用”。还有一些供应商提供托管的JanusGraph。

对于个人学习而言,我认为Neo4j是最容易安装和学习的 - 你下载并运行它,然后在他们基于Web的控制台上打开一个Web浏览器,这只需要几分钟时间。话虽如此,如果您熟悉命令行,JanusGraph只需半个小时即可安装并运行,因此也不太难。

对于学习概念来说,Neo4j非常棒。 Neo4j的查询语言Cypher和JanusGraph的查询语言Gremlin在语义上是相同的,只是拼写不同,所以无论哪种方法都可以学习到概念。

对于构建真实系统,任何一种都可能适用(并且有许多使用这两种方法的成功案例)。

对于选择哪种方法,您需要考虑是否想要与单个供应商(Neo4j)或更广泛的基于标准的社区紧密联系。选择市场领导者和成熟产品 - Neo4j会带来舒适感。选择具有强大行业支持的开放标准 - JanusGraph会带来一定的舒适感。因此,在我看来,没有“错误”的答案 - 使用其中任何一种的人都很满意和成功。但由于必须选择,您需要考虑长期内哪个更符合您的舒适度。


2
Neo4j使用本地图技术。
本地图技术确保通过将节点和关系紧密存储来有效存储数据。 它优化了图形数据库。
使用本地图技术,处理变得更快,因为它使用无索引的邻接矩阵。 这意味着每个节点直接引用其相邻节点。
Titan(现在是JanusGraph)使用非本地图技术。
在非本地图中,我们使用不同的存储后端,如Cassandra、HBase。
与本地图相比,使用非本地图处理变慢,因为数据库使用许多类型的索引来链接节点。

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