ArangoDB多边缘收集性能

时间:2018-01-21 15:55:22

标签: arangodb

我正在构建一个由许多“类型”组成的ArangoDB边缘集合。按类型,考虑动物物种分类。

我将构建一个连接所有这些的图表。 示例:古代同源物种的父母/子女:Homo habilis-> Homo floresiensis-> Homo erectus-> Homo sapiens

将不同的类型放在不同的集合中只会出于肤浅的组织原因。对于我尚未想到的功能,它有可能在将来有用。

我的具体问题是:在ArangoDB中构建使用多个集合的图表是否会影响性能?使用一个大型集合对图表更有效吗?

回答第一条评论: 如果我将其分解为不同的边集合,那么它将是4个集合,每个集合中有大约300,000行。类型可以有多个父母和孩子。查询类型将是最短路径和每个之间的任何连接。如果这有道理? 6度凯文培根型的东西。

编辑: 有关问题和答案,请参阅评论。 几乎每个查询都将跨越多种类型。 许多查询的深度为5-7个顶点。 这个项目几乎完全是READING ......我根本不担心写入速度。

编辑2: 我将使用单个实例还是分布式群集?老实说,要么!无论什么会加速阅读。你告诉我。

2 个答案:

答案 0 :(得分:5)

在单服务器设置中,使用多个集合没有任何惩罚。 特别是如果您的查询没有跨越所有边集合,则在较小集合上执行查找会更快。

这将更快/更慢这将取决于存储引擎(rocksdb / mmfiles)。鉴于您希望获得最大的读取性能,mmfiles可能会更快。

答案 1 :(得分:2)

我在ArangoDB中有一个分类项目,就你报告的数据记录数而言似乎大致相当。

这一数据量对ArangoDB没有任何性能挑战。我选择专注于建模关系以最好地表示数据集,并且没有后悔。

在你的例子中,我可能有一个物种节点的集合。并从“生长”边缘集合的一个集合开始,以捕获物种进化途径。

如果有多种思想流派,多种分类或其他框架来描述物种之间的替代路径,那么我将考虑在不同的边缘集合中捕获每一种。

例如,如果一个分类学路径是通过颌形状到达的,另一个总是使用骨盆,如果countryX有另一种方法,而另一个是基于DNA的,那么将边缘集合专用于每个方法可能是有益的。您将使用完全/大部分相同的物种节点集创建备用互连网络。

物种分类不是我的领域,例子可能是无稽之谈。但我建议不要错过以最有用的方式构建数据的机会。表演很可能不是问题。