graph - 图形数据库可以在节点之间高效地分配数据吗?

标签 graph neo4j graph-databases titan

如果有人在另一个数据库之上构建数据库(例如twitter完成),那么该数据库是否继承了基础数据库的局限性和效率低下?

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

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

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

泰坦声称可以跨节点有效地扩展规模吗?

最佳答案

Titan确定基础存储后端的键排序顺序(Cassandra的BOP,HBase的默认键),然后将ID分配给顶点,以使分配给同一分区块的顶点具有分配给同一物理机的ID。换句话说,Titan可以“理解”底层存储后端如何分配数据并使用利用这种认识的图分区技术。 Titan使用结合了 Realm 知识的半自动分区。

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

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

关于graph - 图形数据库可以在节点之间高效地分配数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17811472/

相关文章:

java - 使用带有属性映射的 Cypher CREATE 命令,来自 Java

neo4j - 简单的递归 CYPHER 查询

neo4j - 在未找到匹配项的 OPTIONAL MATCH 之后创建

algorithm - 给定源顶点,在有向图中查找所有带循环的路径

sql - 表示树结构的最佳数据库

regex - 为什么 OrientDB 不使用索引来使用 "LIKE"运算符进行搜索?

neo4j - 图数据库对象关系图工具

matlab - 如何在 MATLAB 中绘制 3d 曲面图?

graph - arangodb 图形查看器出现问题

python - 如何检测 3D 域中特定序列的结束位置 (x,y,z)