ArangoDB多边集合性能问题

8
我正在构建一个ArangoDB边缘集合,其中包含许多“类型”。按类型分类,可以将其视为动物物种分类法。
我将构建一个连接所有这些内容的图形。例如:古代人类物种的父/子关系:Homo habilis->Homo floresiensis->Homo erectus->Homo sapiens
将不同类型放在不同的集合中只是为了表面上的组织原因。有一种很小的可能性,未来它可能对我尚未想到的功能有用。
我的具体问题是:在ArangoDB中构建使用多个集合的图形是否会影响性能?对于图形,使用一个大集合是否更有效?
回答第一个评论:
如果我将其拆分为不同的边缘集合,则每个集合将有约30万行。类型可以有多个父项和子项。查询类型将是最短路径和每个之间的任何连通性。如果这有意义的话?就像Kevin Bacon的六度分离那样。
编辑:
请参阅评论以获取一些问题和答案。几乎每个查询都将跨越多个类型。许多查询将深入5-7个顶点。这个项目几乎完全是读取...我一点也不担心写入速度。
编辑2:
我会使用单个实例还是分布式集群?老实说,两者都可以!告诉我哪个可以加快读取速度。

答案可能会取决于您将运行的查询类型。您能否更具体地说明一下,并告诉我们您预计有多少种不同类型的边缘集合?您只给了一个例子(父/子)。了解您期望有多少个节点集合,以及大致有多少个节点也可能有所帮助。 - peak
谢谢。我已经更新了我的问题并增加了更多细节。 - Chemdream
单个查询通常会跨多个边缘集合吗?您能举出第二个边缘集合的例子以及一个跨越多个边缘集合的查询的示例吗? - peak
几乎每个查询都会涉及多个数据集合,但只有一个边缘集合。 - Chemdream
2个回答

5
在单服务器设置中,使用多个集合不会有任何惩罚。特别是如果您的查询不涵盖所有边缘集合,则在较小的集合上执行查找速度更快。
这将更快/慢取决于存储引擎(rocksdb/mmfiles)。鉴于您希望获得最大读取性能,mmfiles 可能更快。

Simon,使用多服务器设置时,何时会增加多服务器集群的速度?在阅读Arango网站上的内容时,似乎由于网络延迟,实际上会减慢速度。 - Chemdream
另外,为了澄清,您的意思是“如果您在单个服务器上使用多个集合,速度会更快”? - Chemdream
多服务器设置将提高性能,当您的查询在多台机器上并行执行时。它还允许您扩展您的数据库,如果您的数据不再适合一台机器。 - Simon Grätzer
使用较小的集合可能比在较大的集合中查找要快一点。当你需要避免在查询中添加FILTER语句时,使用多个集合来存储不同类型的内容是值得的。也就是说,你可以将每种类型的对象放在不同的集合中,而不是使用一个type属性。 - Simon Grätzer

3

我在ArangoDB中有一个分类学项目,与您报告的数据记录数量大致相当。

这样的数据量对于ArangoDB来说不会造成性能挑战。我选择专注于建模关系,以最佳方式表示数据集,我一直没有后悔。

在您的示例中,我可能会为物种节点创建一个集合,并从一个“begats”边缘集合开始,以捕获物种进化路径。

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

例如,如果一个分类路径是通过颚形状得出的,另一个永远使用骨盆,如果X国家有另一种方法,另一个基于DNA,则将一个边缘集合用于每个路径可能是有益的。您将使用完全/大部分相同的物种节点创建替代互连网络。

物种分类不是我的领域,这些示例可能是无意义的。但我建议不要错过以最有用的方式组织数据的机会。性能很可能不是问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接