几十亿数据,提交一条数据,判断字段内容是否重复。 直接加索引,怕几十亿数据撑不住。
![]() | 1 ericls 2022-03-08 23:43:40 +08:00 via iPhone benchmark 了吗? |
![]() | 2 BrettD 2022-03-08 23:46:01 +08:00 ![]() bloom filter |
![]() | 3 kera0a 2022-03-08 23:47:19 +08:00 via iPhone ![]() 布隆过滤器,但会有一点点误判率。 误判率越小占用内存越大,速度非常快 O(1) |
![]() | 4 wellsc 2022-03-08 23:48:27 +08:00 文本段?分词+倒排索引 |
![]() | 6 levelworm 2022-03-09 00:16:55 +08:00 via Android 不用全部对比吧,如果是分布式的话。更怕的是技术上不重但是业务上重。 |
![]() | 7 levelworm 2022-03-09 00:39:12 +08:00 via Android 对了,op 用的是什么数据库呐? |
![]() | 8 LeeReamond 2022-03-09 07:07:28 +08:00 @kera0a 布隆过滤器一个问题是无法应对动态数据,实际业务里比如原先拦截 1 ,2 ,3 ,结果第二天业务上 2 从列表里删除了,布隆过滤器就比较吃瘪了 |
![]() | 9 murmur 2022-03-09 08:16:13 +08:00 几十亿数据有分表或者分库么 |
![]() | 11 shawndev 2022-03-09 10:22:34 +08:00 Cuckoo Filter? |
![]() | 12 ElmerZhang 2022-03-09 10:45:30 +08:00 分表+唯一索引 |
![]() | 13 ElmerZhang 2022-03-09 10:49:06 +08:00 当前表不好拆的话,就专门为这个索引建个新表,给这个表分表+唯一索引。 写数据的时候用事务,两个表一起写。 另外,你只是担心抗不住,到底抗不抗得住还是要看压测,说不定就抗得住了呢。不过这么大的表改索引也得费点劲。 |
15 ghoul5426 2022-03-10 15:10:38 +08:00 居然没人说哈希,为每个数据计算一个哈希值,crc32 ( 32 位)、md5 ( 128 位)、sha1 ( 160 位)、sha256 ( 256 位)等都可以,可以把哈希值做主键或者唯一索引,可以用这个值来做分库分表的依据。 |