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

What is difference between Titan and Neo4j graph database?

我从事过关系数据库;但现在想了解图形数据库。我开始知道这两个是图形数据库。这两个数据库有什么区别。我们应该在其中选择什么?

一种方法是简单地尝试选择一个数据库而不是另一个。例如,您可能会快速搜索并发现 Titan 已分叉到 JanusGraph where it is more actively maintained. In your research you may find that there are other open source graph databases as well like OrientDb, ChronoGraph, or Sqlg as well as commercial alternatives like Microsoft's CosmosDb, DSE Graph or IBM Graph。你现在怎么决定?

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

您可以在做出选择之前尝试所有不同的受支持图形数据库,并且您可以使用 Gremlin Console 相当快速地完成此类 prototyping/benchmarking。您将能够自行选择进行项目的最佳方式。

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

Titan 最初由 Aurelius 支持,后者于 2015 年被 DataStax 收购。此举旨在让 DataStax 快速进入图形数据库世界,因为他们现在提供他们自己的 "DSE Graph" 企业产品。 Titan 被分叉(如前所述)到 JanusGraph.

Titan/Janus (IMO) 的好处在于它 "pluggable" 与其他现有的后端和搜索技术。所以它将 "play nice" 用于 Cassandra、HBase、Hadoop、Solr 和 ElasticSearch 等东西。

缺点是社区支持不力。 Titan 项目已被有效杀死,Janus 在 DBEngines 上的得分高达 0.23。这使其成为第 16 大最受欢迎的图形数据库(总排名第 231),这是非常低的。

Neo4j 由 Neo Technology 支持,被认为是 Graph DB 社区的前沿运行(目前得分为 38.52,第一位 Graph DB和第 21 位)。它是 open source,但由 Neo Technologies 控制,因此他们可以决定开源和企业之间的功能集差异。

Neo4j 的好处在于他们有很多教程和学习辅助工具直接内置到 Neo4j 浏览器中,这是一个很好的、用户友好的 Web 界面。他们的文档是一流的,易于阅读和搜索,并且他们在 Stack Overflow 上有很好的追随者。

Neo4j 浏览器截图:

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

一致性:Titan/Janus 是 "eventual consistency" 人群的一部分,而 Neo4j 旨在实现强一致性(尤其是在因果集群场景中)。虽然两者的一致性都可以通过配置进行调整,Titan/Janus 这可能取决于您选择的可插入后端(例如:通常与 HBase 高度一致,而最终与 Cassandra 一致)。

推荐度:

如果您刚开始学习图形数据库和建模,Neo4j 不会出错。只需 download/install 社区版本,运行 它,然后执行 :play movies 作为您的第一个命令(指导您完成加载、建模和查询电影关系的教程)。

如果您对图形有一定的经验,并且不介意 troubleshooting/googling 弄清楚事情(例如如何为 Thrift 设置最大帧大小),那么您可能会做一些非常酷的事情与泰坦

尝试每一种,看看哪一种适合您。

图形数据库远不止两个——有几十个。也就是说,有两个具有实际市场份额:Neo4j 和 Titan/JanusGraph。但是还有许多其他图形数据集,每个都针对不同的特定应用程序空间具有有趣的优势。话虽这么说,但我不会一开始就深入研究所有的小众参与者——学习图形数据库的基本概念可以由两个主要参与者之一完成。

Neo4j 是最成熟的,具有最精美的打包安装和文档、大量参考代码以及来自广泛合作伙伴的支持。

Titan/JanusGraph 是下一个最受欢迎的,因为它是 free/open 来源并且有非常强大的支持(例如 IBM、Google、Hortonworks、AWS 等)。最近的一个复杂情况是,Titan 项目的领导者被收购,冻结了 Titan 项目。但是社区将该项目分叉到 JanusGraph 中。因此,虽然 JanusGraph 是一个新项目,但它实际上是相同的 Titan 代码,具有比 Titan 更广泛的行业支持。

与这两者相关的是用于处理图表的语言。 Neo4j 使用其专有语言 Cypher,而几乎所有其他人都使用 Gremlin 和 TinkerPop 开源工具集(它是 Apache 开源项目集的一部分)。几乎所有的图形数据库,包括 Neo4j,都支持 Gremlin 和 TinkerPop。因此,例如,您可以使用 Cypher 或 Gremlin 来查询 Neo4j,尽管 Neo(和其他一些专有图形数据库供应商)支持 Gremlin 作为第二个 class 公民,可以这么说。例如,您可以从(外部)Gremlin 控制台使用 Gremlin 连接到 Neo,但不能在(非常好的)Neo4j 控制台中使用 Gremlin。

请注意,除了 Titan/JanusGraph 之外,还有许多图形数据库支持 Gremlin。一个非常有趣的新进入者是 Microsoft 的 Azure Cosmos DB,这是一个托管图形数据库,如果您已经使用 Azure,它是 "cheap and easy"。并且有几家供应商提供托管的 JanusGraph。

对于个人学习k 我会说 Neo4j 是最容易设置和学习的 - 你下载并 运行 它,然后打开一个网络浏览器到他们基于网络的控制台,这只需要几个分钟。话虽这么说,如果您对命令行 JanusGraph 感到满意,我只需要半小时就可以安装并获得 运行ning,所以这并不难。

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

为了构建一个真实的系统,这两种方法都可行(并且有很多成功的方法都采用了这两种方法)。

对于您的选择,您需要考虑是要在战略上绑定到单个供应商 (Neo4j) 还是更广泛的基于标准的社区。选择拥有最成熟产品的市场领导者 - Neo4j 是一种舒适度。选择具有强大行业支持的开放标准是一种舒适度——JanusGraph。所以 IMO 没有 "wrong" 答案 - 使用其中任何一个的人都很快乐和成功。但既然你必须选择,你需要考虑你更愿意长期接受哪个。

Neo4j 使用原生图形技术。

  • 原生图技术通过编写彼此靠近的节点和关系来确保数据高效存储。
  • 它优化了图形数据库。
  • 使用原生图形技术,处理变得更快,因为它使用无索引 相邻的。这意味着每个节点直接引用其相邻节点。

Titan(现为 JanusGraph)使用非原生图形技术。

  • 在非本地我们使用不同的存储后端,如 Cassandra、HBase
  • 与本机相比,非本机处理变得更慢,因为数据库使用 许多类型的索引到 link 个节点在一起。