21

如果有人在另一个数据库之上构建数据库,比如 twitter,那么该数据库是否继承了底层数据库的局限性和低效率?

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

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

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

泰坦声称跨节点有效扩展是真的吗?

4

2 回答 2

20

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

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

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

于 2013-07-27T02:17:57.913 回答
1

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

事实上,如果你不复制整个数据集并且你想在你的图中走很长的路,它会很慢。

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

于 2013-07-25T19:32:14.497 回答