1
taotaodaddy 2019-08-04 13:08:50 +08:00 via Android
什么类型的数据,将来如何使用?
怎么有种感觉是物联网数据,直觉时序数据库 |
2
dingyaguang117 2019-08-05 08:39:47 +08:00
数据有多少比例是重复的? 最终留存下来的数据量什么规模?
|
3
dingyaguang117 2019-08-05 08:40:32 +08:00
业务场景还是描述详细点吧
|
4
whp1473 2019-08-05 10:25:13 +08:00
做一个 ID 生成服务,看你每秒插入数据的数量,假如每秒 1000 条,那就每秒生成 3000 条预先存在内存中,然后使用加锁的队列,依次取出。另一个定时任务轮训生成唯一 ID。这样你可以使用自增 ID,而且不会重复
|
5
JL1990 OP @dingyaguang117
业务场景就是,会不断接收来自客户端的上报数据,因为客户端的问题,存在大量重复上报的可能,而且可能会在很多天之后也会上报同样的重复的数据,这些数据内容完全一致( md5 也一致)。 @whp1473 您可能理解有误,我想的是如何保证数据唯一性,不然大量的重复数据,在库里面也是很浪费。 类似于实现了 mysql 唯一索引的功能,但是是在入库前做。因为业务上,会对这些数据去重复之后,再送往 mq |
6
dingyaguang117 2019-08-05 15:23:22 +08:00
@JL1990
数据库唯一性用的是索引,各种树类,时间复杂度是 logN, 不适合高并发查询。 建议上层单独做一层 hash 去重,使用布隆过滤器之类的数据结构。不要把去重负担全部扔给数据库。 另外看你的意思是尽量保证唯一性,但是偶尔有重复也没关系,这样容易多了。可以用一个 hash 数据结构存过期时间,定期清理,还能保持 hash 表大小不增长呢 |