【问题标题】:ArangoDB multiple edge collection performanceArangoDB 多边收集性能
【发布时间】:2018-01-21 15:55:22
【问题描述】:

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

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

将它们放在不同的集合中只是为了表面的组织原因。将来它对我还没有想到的功能很有用的可能性很小。

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

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

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

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

【问题讨论】:

  • 答案可能取决于您将运行的查询类型。您能否对此更具体一些,并告诉我们您设想有多少种不同类型的边缘集合?你只举了一个例子(父母/孩子)。了解您期望有多少个节点集合以及大致有多少个节点也可能会有所帮助?
  • 谢谢。我用更多细节更新了我的问题。
  • 单个查询通常会跨越多个边缘集合吗?您能否举一个第二个边缘集合的示例,以及一个跨多个边缘集合的查询示例?
  • 几乎所有单个查询都会跨越多个数据集合,但只有一个边缘集合。

标签: arangodb


【解决方案1】:

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

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

【讨论】:

  • Simon,使用多服务器设置,多服务器集群何时会提高速度?在 Arango 的网站上阅读,似乎由于网络延迟,它实际上会减慢速度。
  • 另外,澄清一下,你是说“如果你在一个服务器上,使用多个集合应该提高你的速度”?
  • 当您的查询在多台机器上并行执行时,多服务器设置将提高性能。如果您的数据不再适合在一台机器上,它还允许您扩展数据库。
  • 使用较小的集合可能比在较大的集合中查找要快一些。对不同类型的事物使用多个集合主要是有回报的,因为它可以让您避免在查询中添加FILTER 语句。 IE。您将每种类型的对象放在不同的集合中,而不是具有type 属性。
【解决方案2】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多