大数据量下数据判重,有什么好的方法?

2022 年 3 月 8 日
 leebs

几十亿数据,提交一条数据,判断字段内容是否重复。 直接加索引,怕几十亿数据撑不住。

3288 次点击
所在节点    程序员
15 条回复
ericls
2022 年 3 月 8 日
benchmark 了吗?
BrettD
2022 年 3 月 8 日
bloom filter
kera0a
2022 年 3 月 8 日
布隆过滤器,但会有一点点误判率。
误判率越小占用内存越大,速度非常快 O(1)
wellsc
2022 年 3 月 8 日
文本段?分词+倒排索引
leebs
2022 年 3 月 9 日
@kera0a 布隆的空间占用情况呢,几十亿数据不会内存都放不下了吧。
levelworm
2022 年 3 月 9 日
不用全部对比吧,如果是分布式的话。更怕的是技术上不重但是业务上重。
levelworm
2022 年 3 月 9 日
对了,op 用的是什么数据库呐?
LeeReamond
2022 年 3 月 9 日
@kera0a 布隆过滤器一个问题是无法应对动态数据,实际业务里比如原先拦截 1 ,2 ,3 ,结果第二天业务上 2 从列表里删除了,布隆过滤器就比较吃瘪了
murmur
2022 年 3 月 9 日
几十亿数据有分表或者分库么
leebs
2022 年 3 月 9 日
@levelworm mongodb
shawndev
2022 年 3 月 9 日
Cuckoo Filter?
ElmerZhang
2022 年 3 月 9 日
分表+唯一索引
ElmerZhang
2022 年 3 月 9 日
当前表不好拆的话,就专门为这个索引建个新表,给这个表分表+唯一索引。
写数据的时候用事务,两个表一起写。
另外,你只是担心抗不住,到底抗不抗得住还是要看压测,说不定就抗得住了呢。不过这么大的表改索引也得费点劲。
kera0a
2022 年 3 月 9 日
@leebs 空间复杂度根据误判率来计算的
50 亿数据,误判率 0.001 大概需要 8G 内存
ghoul5426
2022 年 3 月 10 日
居然没人说哈希,为每个数据计算一个哈希值,crc32 ( 32 位)、md5 ( 128 位)、sha1 ( 160 位)、sha256 ( 256 位)等都可以,可以把哈希值做主键或者唯一索引,可以用这个值来做分库分表的依据。

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

https://v2ex.xtra.eu.org/t/838980

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

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

© 2021 V2EX