我根本不是数据库设计方面的专家,所以在我尝试用 CS 术语翻译它之前,我会用简单的语言表达我的需求:我正在尝试找到正确的方法来快速迭代大型子集(比如 ~100Mo 的 double ) 的数据,在一个可能非常大的数据集中(比如几个 Go)。我有基本上由 4 个整数(键)和值组成的对象,一个简单的结构(1 双 1 短)。由于我的键只能采用少量值(数百个),我认为将我的数据保存为树是有意义的(键为 1 个深度,值是叶子,至少在我的幼稚视图中很像 XML 的 XPath) .
我希望能够根据键值/这些键值的函数遍历叶子子集。要过滤的组合键会有所不同。我认为这称为横向搜索?
因此,为了避免比较 n 次相同的键,理想情况下,我需要通过键的每个排列来索引数据结构(12 种可能性: !4/!2 )。这似乎boost::multi_index
是为了什么,但是,除非我忽略了 smth,否则这样做的方式实际上是构建这 12 个树结构,将指向我的值节点的指针存储为叶子。考虑到与键相比,我的值很小,我想这将是非常空间效率低下的。
任何关于我应该使用的设计/数据结构的建议,或者关于这些主题的简明教育材料的指针都将非常感激。