新开一帖:原帖不知道怎么删除,囧了
现在的环境 windows2008 r2 +mongodb4.0 +node.js+JAVA
因为服务器上已经有好几个项目,最好不要影响其他正常的运行的项目。或者我专门再租一个服务器跑这个。
软件要求:
每天定时自动下载并且解压(我提供帐号密码去下载),解压后大概每天有 1.5 亿行数据,每天新增 10 万行左右,3 分钟内提取新增行,反正越快越好。 提取新增行后,自动按关键字(关键字数量 2-100 个左右,我每天手动修改)提取,链接我现在的 API 完成。
源文件解压后是 纯文本,4 列,我只需要提取 1 列里面的新增数据
下载大小不变的,源数据有增有减,每天下载时间固定的。
其他所有步骤我现在的项目已经有完整能使用的了,无非所有难点就在如何最快的 获得 两组 1.5 亿行数据的对比提取新增行
(我不懂能不能实现,因为下载要 7 分钟,我想所有操作 10-15 分钟内完成,反正越快越好,最好不要升级服务器就能实现,因为升级太麻烦了)
请有时间的 大神 联系我 qq,感谢 49 六一 47 九五三
至于价格,我不太懂这个市场价,以前找 v2 大神开发的都是他们自己报价,所以能完成自己报个价好了,市场价就好,以后项目一定还有的。
1
la2la 2021-06-15 19:08:57 +08:00
自己想到的一个方案,你可以尝试一下。
假设:两个文件昨天的 2021-06-14.txt, 今天下载的 2021-06-15.txt, 提取的新增列名 c1 。提前将 2021-06-14.txt 这个文件的 c1 列布隆过滤器中,在 2021-06-15.txt 下载完的一刻将文件切分成 N 个( N 取决于你的服务器的配置),然后并行跑布隆过滤器,就能很快筛选出新增列,筛选后的类通过编译好的正则提取关键字。 感觉这个方案应该可行,1.5 亿数据不是很多 |
2
la2la 2021-06-15 19:20:02 +08:00
这个方案有个 BUG,切分的时候有可能把一行数据切分成两行,就不切分了,直接跑,估计不会很慢或者切分的时候需要按照换行符切割,在或者下载的时候就并行下载成多个文件
|
4
whahuzhihao 2021-06-15 19:58:16 +08:00
有可能出现重复的行吗?如果昨天 a 出现了 3 次,今天出现了 4 次,那么 a 就是新增的? 这样没法布隆
|
5
fourstone OP @whahuzhihao 正常来说是没有重复行的,有重复行也只要一条就好了
|
6
joynvda 2021-06-15 20:56:11 +08:00
不是有人接了吗?
|
8
ku9527 2021-06-16 01:05:34 +08:00
文件解压缩后 20.5g, 我用我电脑试了下, 光把这文件读到内存,花了 109 秒,平均速度 183M/s, SATA2 机械硬盘,两个文件都读一下的话,估计得 200 秒多了,已经超过你理想的 3 分钟了,这还没开始比较呢, 你服务器用的很快的硬盘吗?速度多少
|
9
ymmud 2021-06-16 12:36:53 +08:00
做成开放题目,有奖挑战吧,名义上好听多啦
|
11
joynvda 2021-06-16 20:59:47 +08:00
如果数据不敏感(或者能脱敏),试试也挺好玩的。
|
14
fourstone OP @joynvda py3 是什么我不知道啊。
目前 1.每天定时下载(压缩包 4g 左右,每天大小差不多固定,里面 3.6 亿行,去掉重复 1.5 亿行)2.解压 3.对比 4.提取保存 目前服务器配置 2u+16g+100G ssd,因为项目再运行的有点多了,我在考虑为了这个项目升级一下服务器 |
17
lspie0517 2021-06-22 16:09:13 +08:00
这个数据如果不压缩原始存放在哪?数据库?
|
18
forgottencoast 2021-06-29 10:00:19 +08:00
数据在哪里下载呢?
|
19
fourstone OP |