Graph 图形数据库能否跨节点高效地分布数据?

Graph 图形数据库能否跨节点高效地分布数据?,graph,neo4j,graph-databases,titan,Graph,Neo4j,Graph Databases,Titan,如果有人在另一个数据库之上构建一个数据库,比如twitter,那么该数据库是否继承了底层数据库的局限性和低效性 我对titan db()特别感兴趣,因为他们声称支持跨节点高效地分割数据集 由于cassandra的高效性,他们声称支持跨节点分发数据。然而,neo4j声称,他们不在节点之间分发数据,而是在每个节点上复制整个数据集的原因是,任何离开一个节点的图形遍历,因此必须在以太网网络上移动,速度太慢,不实用 由于cassandra对图没有任何知识,它无法优化以将图遍历保持在一个节点上。因此,大多数

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

我对titan db()特别感兴趣,因为他们声称支持跨节点高效地分割数据集

由于cassandra的高效性,他们声称支持跨节点分发数据。然而,neo4j声称,他们不在节点之间分发数据,而是在每个节点上复制整个数据集的原因是,任何离开一个节点的图形遍历,因此必须在以太网网络上移动,速度太慢,不实用

由于cassandra对图没有任何知识,它无法优化以将图遍历保持在一个节点上。因此,大多数图遍历将跨越节点边界

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

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

事实上,如果您不复制整个数据集,并且希望在图形中通过一条很长的路径,那么速度会很慢


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

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

在Pearson benchmark()中,图形是根据大学进行划分的,这是这个特定数据集的一个接近最优的划分标准。如果没有分区,扩展到1200亿条边几乎是不可能的


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

Titan似乎支持任何类型的图,因为cassandra(假定)对图一无所知,只知道原始数据。不幸的是,我没有几个服务器用于测试。我不认为在同一个硬盘上运行5个虚拟机的基准测试(带有内部网络)是测试这一点的公平方法。Objective/DB是一个大规模可扩展的对象/图形数据库,它跨主机分布节点,并允许边缘连接分布的节点。这提供了使体系结构水平可伸缩的优势。对象页缓存机制弥补了跨网络的一些低效性。我们的许多客户都有需要分布式解决方案的分布式体系结构。