
1 yidinghe 2019-12-31 14:04:25 +08:00 via Android 分两方面,一是入口把关,而是存量记录清除。入口把关就是找个 Redis 缓存唯一键,存在重复则不插入数据库。这部分先做。然后对存量记录进行清理,清理完将唯一索引建起来。 |
2 wangyzj 2019-12-31 14:23:44 +08:00 哈希排重? |
4 tabris17 2019-12-31 14:45:32 +08:00 先写入再去重 |
5 shengchen11 2019-12-31 15:24:18 +08:00 直接 truncate 在 insert 不可以吗 |
6 lazyfighter 2019-12-31 15:29:32 +08:00 我都没看懂这句话。。。例如当前某时刻有 ABCDE 三条记录,接下来 client 又传上来了 AABCD 五条数据。因此实际新增的是 AD 两条数据需要插入到数据库 |
7 reus 2019-12-31 15:33:19 +08:00 不问业务方,问 V2EX ? 明显是业务问题,你自己都说了 ABCD,这不就是唯一键?你又说无法生成,自相矛盾。 |
8 reus 2019-12-31 15:34:33 +08:00 你怎么判断出 ABCDE,你就怎么生成唯一键,就这么简单。 |
9 lovelive1024 2019-12-31 15:46:00 +08:00 你这需求就有问题,既然存在完全一样的数据,你没有标识怎么可能区分出来,就算是你一个人来也区分不出来,更别说程序了 |
10 dallaslu 2019-12-31 15:51:16 +08:00 例如当前某时刻有 ABCDE 三条记录,接下来 client 又传上来了 AABCD 五条数据。因此实际新增的是 AD 两条数据需要插入到数据库,并移除 E 记录. 你是想这么说吗: 例如当前某时刻有 BCE 三条记录,接下来 client 又传上来了 AABCD 五条数据。因此实际新增的是 AD 两条数据需要插入到数据库,并移除 E 记录. |
11 sun1991 2019-12-31 16:13:39 +08:00 限制数据时间范围, 比如 5 年. 全盘接受所有的上传数据, 然后等到每天凌晨跑一遍耗时的去重. 第二天再开放前一天上传的数据给用户. |
12 classyk OP ABCDE 自然是可以判断是不同的 但是 AAAA 呢??我的意思是 AAAA 要插入 4 条数据,而不是一条 A |
13 classyk OP |
15 index90 2019-12-31 16:38:36 +08:00 #12 为什么只有 AD 两条数据要插入数据库,而 BC 不用? 哦?貌似是有序的?我只能想到能够转化为这样的问题,两条字符串( ABCE 与 AABCD ),求最长子串匹配,最后再求差异? 或者 LZ 先组织好语言再上来问? |
17 oubenruing 2019-12-31 17:07:21 +08:00 例如当前某时刻有 ABCE 四条记录,接下来 client 又传上来了 AABCD 五条数据。因此实际新增的是 AD 两条数据需要插入到数据库,并移除 E 记录. 先清空然 ABCE,再 AABCD 全部插入的意思? |
18 matepi 2019-12-31 17:21:29 +08:00 1 楼 2 楼不是说的挺好的么? 就是在一段时间内对记录全字段做 hash,然后放内存 redis 之类 hash 命中后去重呗 楼主第 12 楼没看懂,是完全重复的 4 条 AAAA,还是必须都留在数据库里面的? 那去重的原则是什么? 是一次性上来的 AAAA,要入库;但之前数据库如果已经有了 A,那么这次上来的 AAAA 不入库?还是少入一个,只入 3 个 AAA ? 需求再组织下。很多疑问。 |
19 coconut5200 2019-12-31 17:21:54 +08:00 1. 根据有明显特征的几个字段,哈希一下作为你的唯一键 2. 每天定时跑脚本驱虫 |