如何在Mongodb中快速插入数千个JSON数组转储



我有大约20000个带有JSON数组的文件。我想将所有这些文件转储到本地托管的MongoDB中。我使用mongoimport是为了这个目的。

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

这20000个文件包含大约1200万条记录。

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

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

原因可能在于:一个有100K记录的文件是一个很大的块,这对于"mongoimport"来说很耗时。我还不明白为什么PyMongo比mongoimport更快。JSON文件的处理速度是否更快?因此,您可能可以尝试以多线程的方式使用PyMongo。

最新更新