从mongodb导出数据最有效的方法

时间:2018-05-18 23:58:39

标签: node.js mongodb bigdata

我们使用mongo(自托管,而不是托管服务)作为我们的数据存储,但我们的数据量对于mongo来说太大了。我们将转换到Google的大桌面服务,但现在我们遇到了一个问题:我们必须从单个mongo集合中一次性导出6500万条记录(~200GB)。我们还希望在几个小时内完成,以减少那段时间内更新的数据量。

我不太关心写入大表,因为它看起来很快,很容易并行化,并且实际上是为处理这么多数据而设计的。困难的部分是从mongo读取。

我们尝试过: 在节点中运行查询(无排序/过滤器),通过转换运行输出,然后上载到大表。事实证明,这种方法非常幼稚。我们把盒子上的CPU吹掉没有明显的瓶颈,但是即使我们跳过整个书写部分,阅读部分仍然很慢。

下一个选项都围绕着“执行完整数据库转储,将其拆分为偶数大小的块,并行处理它”的一般概念。

使用mongoexport。这仍然非常慢,但比db查询要好得多。

使用mongodump。这比mongoexport快,但仍处于缓慢的一边。另外,我不知道解析文件有多容易。

我一直难以确定瓶颈是什么。 CPU通常很高,但没有超出(除了上面提到的天真的方法)。正如预期的那样,磁盘I / O通常也非常高。我也不认为我可以控制它,因为它在云端(GCP)。

我主要试图在这里得到其他想法/方法,虽然我完全清楚这可能根本不可能,但在得出结论之前我想要第二个意见。

0 个答案:

没有答案