有 2 份数据,
A 有 2 亿数据,单行不超过 70 字符。
B 包含 A 的所有数据,并在此基础上每日增加 20 万左右。
如何快速的得到增加的 20 万数据。
1
sadfQED2 2022-09-26 15:28:19 +08:00 via Android
70×3×200000000/1024/1024/1024 ≈39G
找台 64g 内存的服务器,直接建一个 map ,把第一份数据加载到内存中,然后遍历第二份数量。完事 |
2
buydomainus OP @sadfQED2 Thx.
不过这个方案应该不需要不少时间哈。 |
3
buydomainus OP @buydomainus 打错,应该需要不少时间。
|
4
sadfQED2 2022-09-27 09:27:16 +08:00 via Android
@buydomainus On 的时间复杂度,你难道还有本身搞成 O1 的复杂度不成。主要时间受限于磁盘 io
|
5
Maxwe11 2022-09-27 18:56:38 +08:00
想快速比对的最简单无非是缩小数据量,看那新增的 20 万是怎么来的,从哪里来;
1 、新业务带参,或 id 规则,这样不用管原来那 2 亿,直接筛出新数据就行; 2 、看怎么切数据,常见的按照天或某种分类做切片分区,只比对新增日或某细分分类下的数据,总量小了自然就快了; 3 、参考上面兄弟说的,常见的 sql 写出花,也不如内存、ssd 来的爽快。 |
6
zgl263885 2022-09-28 07:46:11 +08:00 via iPhone
每天增加的数据各自分片,自然就区分开了
|
7
buydomainus OP golang 只用了 2m 就完成了对比。python 要 n 天的时间。
|
8
boshok 2023-01-08 18:49:16 +08:00
@buydomainus #7 同样的需求,求 golang 方案,多谢。
|