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

Aks*_*wad 6 database non-relational-database neo4j graph-databases titan

我曾在关系数据库工作; 但现在想了解图数据库.我才知道这两个是图数据库.这两个数据库有什么区别.我们应该在他们中间选择什么?

ste*_*tte 15

一种方法是简单地尝试选择一个数据库而不是另一个数据库.例如,您可能会快速搜索,发现Titan已经分叉到JanusGraph,在那里更积极地维护它.在您的研究中,您可能会发现还有其他开源图形数据库,如OrientDb,ChronoGraphSqlg,以及Microsoft的CosmosDb,DSE GraphIBM Graph等商业替代品.你现在如何决定?

有一个图形框架将所有这些图形连接在一起,包括Neo4j/Titan(以及这里列出的更多):Apache TinkerPop.TinkerPop提供了对不同图形数据库和图形处理器的抽象,允许相同的代码与不同的可配置后端一起使用.这种模式与您使用JDBC在SQL中找到的模式非常相似,这有助于使您的代码供应商不可知.

在做出选择之前,您可以尝试所有不同的受支持的图形数据库,并且可以使用Gremlin控制台相当快速地进行这种类型的原型设计/基准测试.您将能够自主选择什么是最适合您项目的方式.

当我到这篇文章的最后,我没有直接回答你的问题.如果您刚刚开始并且只是对学习图形数据库感兴趣,那么我可能不建议从Titan/JanusGraph开始,因为它需要一些配置才能开始(模式,后端选择等).使用Gremlin控制台的TinkerGraph或Neo4j 开始尝试一些简单的图形遍历并从那里开始.


Aar*_*ron 15

Titan最初由Aurelius提供支持,2015年被DataStax收购.此举旨在让DataStax迅速进入Graph DB世界,因为他们现在提供自己的"DSE Graph"企业产品.从那以后,泰坦就被分到了(如前所述)JanusGraph.

Titan/Janus(IMO)的优点在于它可以与其他现有的后端和搜索技术"插拔".因此,它将与Cassandra,HBase,Hadoop,Solr和ElasticSearch等"玩得很好".

缺点是社区支持很难.Titan项目已被有效杀死,Janus在DBEngines上获得了惊人的0.23.这使它成为第16个最受欢迎的Graph DB(总共231个),这是非常低的.

Neo4j得到了Neo Technology的支持,并被视为Graph DB社区的领跑者(目前得分为38.52,第一图表DB和第21名).它是开源的,但由Neo Technologies控制,因此它们可以决定开源和企业之间功能集的差异.

关于Neo4j的好处是他们在Neo4j浏览器中内置了很多教程和学习辅助工具,这是一个不错的,用户友好的Web界面.他们的文档是一流的,易于阅读和搜索,他们在Stack Overflow上有很好的关注.

Neo4j浏览器截图:

在此输入图像描述

Neo4j的缺点是某些功能(如群集)仅在企业版中可用.但是,如果你为一家大公司工作,他不介意为企业许可证掏钱,这可能不是什么大问题.

一致性:Titan/Janus是"最终一致性"人群的一部分,而Neo4j旨在保持一致性(特别是在因果聚类场景中).虽然可以通过配置调整一致性,但Titan/Janus可以依赖于您选择的可插拔后端(例如:通常与HBase强一致,最终与Cassandra一致).

建议:

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

如果您对图表有一些经验,并且不介意排除/谷歌搜索以找出事情(比如如何为Thrift设置最大帧大小),那么你可能可以用Titan做一些非常酷的事情.

尝试每一个,看看哪个适合你.


小智 10

有两个以上的图形数据库 - 有几十个.话虽如此,有两个真正的市场份额: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的图形数据库.一个非常有趣的新进入者是微软的Azure Cosmos DB,它是一个托管图形数据库,如果你已经使用Azure,它"便宜又简单".有几家供应商提供托管的JanusGraph.

对于个人学习,我会说Neo4j是最容易设置和学习的 - 你下载并运行它,并在他们的基于Web的控制台上打开一个Web浏览器,这只需要几分钟.话虽如此,如果你在命令行上感觉很舒服,JanusGraph只花了半个小时来安装并为我跑步,所以这并不难.

为了学习Neo4j的概念很棒.Neo4j的查询语言Cypher和JanusGraph的查询语言Gremlin在语义上是相同的,只是拼写不同,因此您将以任何一种方式学习这些概念.

为了构建一个真实的系统,要么可以工作(并且有两种方法都有很多成功).

您选择的是,您需要考虑是否要与单个供应商(Neo4j)或更广泛的基于标准的社区建立战略联系.用最成熟的产品Neo4j挑选市场领导者是一种舒适的程度.在强大的行业支持下,采用开放标准的方式令人感到舒适--JanusGraph.所以IMO没有"错误"的答案 - 使用其中任何一个的人都很开心并且很成功.但是既然你必须选择,你需要考虑哪些你长期更舒服.