首页 文章

ArangoDB多边缘收集性能

提问于
浏览
8

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

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

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

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

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

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

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

2 回答

  • 4

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

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

  • 1

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

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

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

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

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

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

相关问题