我有一个与 Cassandra 支持的 Titan 图形数据库通信的 Python 应用程序。
Python 应用程序 ---------> Rexster 服务器 + Titan Graph DB + Cassandra。
“Rexster Server + Titan Graph DB + Cassandra”位于单个 JVM 内。
我的 python 应用程序在多个虚拟机上运行。即每个虚拟机都有我的应用程序的相同副本。这个想法是使应用程序具有可扩展性。现在很明显,对于初始实现,我使用的是“Rexster Server + Titan Graph DB + Cassandra”的单个实例。这意味着后端数据库是单个节点。我在不同虚拟机上运行的应用程序与同一个后端通信。
我的问题如下。
1)我也想让后端数据库具有可扩展性。我怎样才能做到这一点?
2)我需要使用相同的“Rexster + Titan Graph DB”并配置多个cassandra节点吗?
3)Titan Graph DB 是该用例的最佳选择吗?或者我可以用 Neo4j 替换 Titan Graph DB,用 Neo4jserver 替换 Rexster。为什么/为什么不?
Titan 是一个高度可扩展的图形数据库,正如其示例所示。为了回答你的问题,我认为有必要表达你的项目有多大。如果您打算部署 hadoop 集群,请确保将 rexster 配置为连接到后端的 Zookeeper 地址(如果由其管理),而不是节点地址列表。
1. 我也想让后端数据库具有可扩展性。我该怎么做?
如果您打算超越一台机器的限制,您可以参考此页面以获取更多信息:Titan-Cassandra 配置。
至于如何使后端数据库具有可扩展性,Cassandra和HBase都是可扩展性非常好的数据库,我建议您阅读更多有关Hadoop生态系统的内容,以了解Titan DB如何适应这一点。您可以有许多 Rexster 可以与之通信的 HBase/Cassandra 节点
2. 我需要使用相同的“Rexster + Titan Graph DB”并配置多个cassandra节点吗?
您可以在集群中的不同计算机上启动多个 rexster 服务器,每个服务器都连接到同一后端。但是 rexster 中的每个图都是相互独立的,因此您必须手动对图操作进行分区。在这种情况下,它只适合大量用户而不是深度遍历/查询
3. Titan Graph DB 是该用例的最佳选择吗?或者我可以用 Neo4j 替换 Titan Graph DB,用 Neo4jserver 替换 Rexster。为什么/为什么不?
因为看起来您要部署集群,所以我认为 Titan 是更好的选择,除非您愿意付费购买 Neo4j 企业版来支持集群。 Neo4j 版本 另一点需要考虑:Titan 与 OrientDB
为了使后端数据库可扩展,请考虑为 Titan 创建 Cassandra 集群。添加更多节点来分发数据并处理增加的流量。
扩展 Cassandra 用于数据存储,同时保留 Rexster 和 Titan 用于查询;随着数据集的增长调整配置以提高效率。
如果处理海量图需要分布式扩展,请选择Titan;考虑 Neo4j 的易用性、成熟的功能以及具有集群选项的垂直扩展。