【发布时间】:2017-02-16 07:21:24
【问题描述】:
我现在面临一个问题,我不确定什么是正确的解决方案。我会试着解释一下,希望有人能给我一些好的解决方案:
我有两个大数据数组。我正在浏览的一个数据样本介于 50^3 和 150^3 之间(通常在 50 和 100 之间,最坏的情况是 150)。 对于每个样本,我想查询另一个大小大致相同的结构(总组合数量如此之多,我无法全部探索)。
无法准确预测查询,但通常情况下,它类似于: 结构具有字段 A B C D E F G (编辑:总共有 10 到 20 个 int 字段)。 查询类似于: 10 100 且 D > 200。 是的,它真的很接近 SQL。
我想把它放在一个数据库中,但实际上它是一个独立的数据库,我可以在 RAM 中工作以使其更快(速度是一个基本标准)。
我想尝试使用 GPGPU,但这似乎是一个糟糕的主意,尽管搜索可以并行,但这似乎不是一个好主意,搜索不可预测数量的结果并不是一个好的应用程序(如果有人可以告诉我我的理解是否正确,这将帮助我确认我应该原谅这个解决方案)。 编辑:由于查询性质,结果的数量是不可预测的,但它非常低,因为目的是找到少量非常适合的组合
既然我可以使用数据库,为什么不制作 RAM B-Tree?它似乎接近解决方案,但它是吗?如果是,我应该如何建立我的索引?我真的可以做多维索引吗,因为多维搜索总是存在的?可能 UB-Tree 或 R-tree 可以完成这项工作(但在我的第二个数据样本中,我可能有一些重复,所以它不会使 R-TREE 不适用吗?)。 问题是,我不确定我现在是否正确理解所有这些,所以如果你们中的一个人知道树(和 gpgpu,甚至我没想到的解决方案),也许你可以让我知道我应该探索哪个解决方案、学习和实施?
【问题讨论】:
标签: search indexing tree gpgpu