【发布时间】:2016-06-06 19:39:27
【问题描述】:
我正在寻找一种数据结构来处理包含 512 个二进制值的数十亿个二进制字符串。
我的目标是向结构发送查询并获得一个结果集,其中包含距离较近的所有数据。
我的第一个想法是使用 kd 树。但是那些树对于高维来说非常慢。 我的第二个想法是使用 lsh 方法(minHash/superbit)lsh。但为此,我还必须有一个结构来执行有效的搜索
对如何处理这些大数据有什么想法吗?
**更新** 一些细节说明:
- 因为汉明距离只存在一个上限,可能是 128。但我不知道上限
- 插入或删除会很好,但我也可以重建图表(数据库每周只更新一次)
- 结果集必须包含所有相关节点(我不是在找knn)
【问题讨论】:
-
请说明需求。这个结果集是否必须包含给定距离内的所有节点?距离有上限和下限吗?您能否承受大量开销来索引和组织数据?会有插入或删除吗?
-
你好 Prune,是的,结果集应该包含所有在距离上限以下的节点。不存在下限。插入和删除会很好,但我也可以重建图表。
-
查询和更改的比例是多少?数据库设计很可能取决于更改(添加和删除)的相对频率。
-
另外,可能的距离值是多少?是否值得在此基础上进行优化?
-
数据库应该每周更新一次,所以插入/删除并不那么重要。及时我不知道最大汉明距离。也许所有 512 位中的 128 位应该是正确的
标签: distance hamming-distance bigdata