ArangoDB-索引比拥有更多集合更好吗?

问题描述 投票:0回答:1

我有3种类型的实体:

  • 主题
  • 主题
  • 任务

每个主题中有主题任务topics可以相互依赖。 (当然,属于sj1主题topic只能依赖于也属于sj1主题的另一个topic。)

[任务和主题之间存在联系(也必须属于同一主题),这表明以下事实:要解决某个任务,我们需要注意某些主题] >。因此,

任务

可能需要更多的主题。另外,<>可能需要<>。 (N M个连接。)什么是最好的存储解决方案?

解决方案

  1. 每种类型的实体都有3个集合

    任务和
  • 主题中具有主题标识符属性的索引。
  • 以及用于存储主题 [N] [M] 任务]之间的连接的边缘集合”
  • 解决方案
  • 具有

    主题

  • 的1个收藏集>
      对于每个
    • 主题
    ,有1个主题
    和1个
  • 任务集合。 主题任务/主题
  • 之间的连接可以基于集合名称的前缀。对于每个主题,为任务
  • 主题
  • ]之间的连接设置一个边缘集合这样,如果我想在主题的主题或任务中进行搜索,则无需根据主题标识符索引对其进行预过滤。我将立即获得包含我所有数据的所需集合。此外,我没有tasks和topics中每个文档的索引开销。另一方面,这将导致混乱的集合。

    旁注:最多可以容纳50个主题,但是任务和主题的数量是无限的。

我有3种类型的实体:主题主题任务在每个主题中都有主题和任务。主题可以相互依赖。 (当然,属于sj1主题的主题只能是...

按照您的说法,“意识”是通过“图形”生成的,它不需要额外的索引即可发挥最佳性能。 ArangoDB自动创建特殊的“ _key”和“ _from / _to”索引,将其用于图形遍历。
但是对于索引,关于所有搜索性能-索引是根据要查找的数据添加的。它实际上取决于您要如何搜索:

具有多个实体类型的一个集合或

按实体类型分类的多个集合。

  • 拥有大量馆藏不会受到惩罚,
并且图形可以链接单个馆藏中的文档-不需要将它们分开。此外,您可以具有多个边缘集合和/或多个文档集合。这些概念对我们这些像我们一样来自传统RDBMS的人构成了挑战-“无模式”或“多模型”数据库有点使规范化了。
  • 我个人选择基于数据源构建相当大的集合(我从外部源导入数据)。每个集合包含由objType属性标识的多个对象/数据模式的文档。这样做的好处是,您可以在单个字段(甚至是具有多个字段的索引,例如title + objType)上搜索集合中的所有文档,从而非常迅速地减少了要迭代/遍历的文档集-

    通常是获得实际性能提升的地方。
  • 所以...我想我推荐

    解决方案3?

    database indexing collections arangodb
    1个回答
    0
    投票

    具有多个实体类型的一个集合或

    按实体类型分类的多个集合。

    © www.soinside.com 2019 - 2024. All rights reserved.