有没有一种专门的 Nosql,只用来查询是否存在某个特定值的?

2019-09-18 15:46:50 +08:00
 kisshere

这种 Nosql 应该不叫“kv 库”了吧,应该叫做“v 库”了,因为不需要键值,只需要在千万级数据中查询某个特定值的存在,返回 bool 值即可,查询时间毫秒级

求推荐

2401 次点击
所在节点    程序员
23 条回复
fluorinedog
2019-10-08 02:02:33 +08:00
@dusu 一口老血喷到屏幕上...
第一,hll 可以基于高并发的原子操作,你刚好说反了
第二,hll 是概率算法,在后期 hll 自己的数据结构起主导后,对于每个桶,要么不更新,要么一次更新增加 N 个元素。打个比方,hll 就像一个精确到 100 的倍数的 distinct value 统计函数,你用它来统计某个数是否在集合中的话,错误率是 99%好吧。
dusu
2019-10-08 22:52:14 +08:00
@fluorinedog 感谢老哥指导,小弟受教~之前确实理解错了
不过我觉得可以通过控制每个 hll 桶内元素的数量去解决误差?
像类似于可能在 1w 或 10w 的数据集的时候误差比较小,
那么通可以过 id % 桶数量 找到对应 key 来减少误差,
个人想法哈,仅供讨论...
fluorinedog
2019-10-10 16:02:16 +08:00
@dusu 那 hll 就没有任何优势了。hll 本来就是用相对少量的定长内存统计大量的数据,但是当数据量很少时还不如 std::set 呢...
同时从信息论的角度来看,hll 平均每个元素不到 0.1 个 bit 时,必然无法完成集合的 exists 功能。作为对比,bloom filter 平均一个元素有几个 bit,已经基本压缩到极致了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601853

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX