估算了一下,一台 16 核 140GB 服务器,120GB * 250MB,C++纯内存跑大概需要 27-40 个小时。
这种服务器如果来一打,抛开数据交换时间,算一次的时间估计能压缩在 3 个小时内。
但问题是:
1.你们需要足够的服务器资源,以及足够强劲的内网带宽。服务器不够,或者内网带宽只有百兆,那就 GG 了。
2.你们需要经验丰富的分布式 C++数据处理经验。不然跑一次 3 小时,发现有问题,改下程序重新跑一次,3 小时又过去了。
3.从 MongoDB 的数据导出,再到 C++的分布式数据导入,需要全程不能踩坑。
比如,MongoDB 导出时,导出工具有 bug,导致处理了半个小时突然卡死;
或者 MongoDB 是分布式架构且数据导出对于磁盘甚至网络是随机 IO 操作;
或者 C++导入数据时忘了用 cache 提速导致导入时瓶颈在机械硬盘的随机 IO 上;
甚至,MongoDB 导出时,发现早期数据录入阶段,因为写策略没使用安全策略且踩了 MongoDB 的性能 bug 导致丢数据;
就算前面都顺利,在最后把这 120GB 均分到不同服务器时,发现交换机的带宽居然不够。或者早期图便宜只用了超 5 类线,等等,这些都是坑。
我咋感觉,这需求,有点像是公司恶意辞退?