图表数据库能否跨节点有效地分配数据?

时间:2013-07-23 13:23:31

标签: graph neo4j graph-databases titan

如果某人在另一个数据库之上构建数据库(例如twitter已经完成),该数据库是否会继承底层数据库的限制和低效率?

我对titan db(http://thinkaurelius.com)特别感兴趣,因为他们声称支持跨节点有效地分割数据集。

由于cassandra的效率,他们声称支持跨节点分发数据。然而,neo4j声称他们不在节点之间分配数据,而是在每个节点上复制整个数据集的原因是因为任何离开一个节点的图遍历,因此必须移动到以太网网络,这太慢了要切合实际。

由于cassandra不了解图形,因此无法优化以在一个节点上保持图形遍历。因此,大多数图遍历将跨越节点边界。

Titans声称是否可以跨节点有效扩展?

2 个答案:

答案 0 :(得分:19)

Titan确定底层存储后端的密钥排序顺序(Cassandra的BOP,HBase的默认值),然后将id分配给顶点,以便分配给同一分区块的顶点具有分配给同一物理机的ID 。换句话说,Titan“理解”底层存储后端如何分配数据并使用利用此感知的图分区技术。 Titan使用半自动分区,其中包含领域知识。

在Pearson基准测试(http://arli.us/edu-planet-scale)中,图表根据大学进行了划分,这是该特定数据集的近似最佳分区标准。如果没有分区,扩展到1200亿边缘几乎是不可能的。

Titan建立在经过验证的技术(用于扩展,持久性,热备份,可用性,灾难恢复等)之上,同时在图层上进行创新。这与Twitter的Flock和Facebook的Tao所采取的路线相同。虽然这意味着Titan在非常深的遍历中速度较慢,但​​它确实允许Titan扩展到非常大的图形或非常多的并发事务(读写)。

答案 1 :(得分:0)

好问题。 我认为这都是关于校准的。 Twitter(使用Cassandra)使用图形数据库是一种非常具体的方式(它们只有两个级别的“深度”),因此查询不必遍历长图(并且它们不必强制复制整个数据集)。 我认为Titan和Neo4j都是正确的,Neo4j试图提供一个通用的图形数据库,所以你有多种解决方案,具体取决于你如何使用它,他们不知道人们将如何使用它,所以他们应用更常见的解决方案:复制整个数据集。

事实上,如果你不复制整个数据集,并且想要在图表中走过一条长路径,那么它将很慢。

那么,你的用法是什么?我从未使用Titan,但是根据查询的“深度”,一个好的测试是将其性能与Neo4j进行比较。