0

我有大约 20,000 个包含 JSON 数组的文件。我想将所有这些文件转储到本地托管的 MongoDB 中。我为此目的使用 mongoimport 。

有什么办法可以加快这个过程吗?

这 20,000 个文件包含大约 1200 万条记录。

4

1 回答 1

0

我的 Mongo 版本是 32 核的 linux 服务器中的 2.6.12。我已将 1.34 亿条记录导入 MongoDB。输入文件的数量在 1700 左右,格式为 JSON 数组。我的测试结果如下:

  1. mongoimport:一次 10 万条记录。4分50秒导入100K条记录。(在Mongo 3.0.0版本之前,没有“--numInsertionWorkers”参数,所以我进行单线程导入。如果有新版本可用,您可以尝试使用该参数。)
  2. mongoimport:一次 50K 条记录。在 2 分钟 20 秒内导入 10 万条记录。
  3. PyMongo(单线程):一次记录一次,使用insert方法。在 30 秒内导入 10 万条记录。
  4. PyMongo(多线程,线程数为8):一次记录一次。在 1 小时 32 分钟内导入 1.34 亿条记录。这几乎是线性加速。

原因可能在于:具有 100K 记录的文件是一个大块,“mongoimport”处理起来很耗时。我还没弄清楚为什么 PyMongo 比 mongoimport 快。JSON 文件的处理速度更快吗?因此,您可以尝试以多线程方式使用 PyMongo。

于 2017-03-17T09:20:14.270 回答