ArangoDB 多边收集性能

ArangoDB multiple edge collection performance

我正在构建一个包含许多 "types" 的 ArangoDB 边缘集合。按类型,想想动物物种分类法。

我将构建一个连接所有这些的图表。 示例:parent/child 古代人种:Homo habilis->Homo floresiensis->Homo erectus->Homo sapiens

将它们放在不同的集合中只是出于肤浅的组织原因。对于我还没有想到的功能,它在未来很有用的可能性很小。

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

回复第一条评论: 如果我将其分解为不同的边缘集合,它将是 4 个集合,每个集合大约有 300,000 行。类型可以有多个parents和children。查询的类型将是最短路径和每个之间的任何连接。如果这有意义? 6 度的 Kevin Bacon 类型的东西。

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

编辑 2: 我将使用单个实例还是分布式集群?老实说,要么!任何可以加快读取速度的东西。你告诉我。

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

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

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

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

在你的例子中,我可能有一个物种节点集合。并从 'begats' 边缘集合的一个集合开始,以捕捉物种进化路径。

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

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

物种分类学不是我的领域,这些例子可能是胡说八道。但我建议不要错过以最有用的方式构建数据的机会。性能很可能不是问题。