如何改善将XML导入mongodb?

我有一些要导入到mongodb数据库的大型XML文件(每个5GB〜).我正在使用Expat解析文档,进行一些数据操作(删除某些字段,单位转换等),然后插入数据库中.我的脚本基于这个:https://github.com/bgianfo/*-mongodb/blob/master/so-import

我的问题是:有没有一种方法可以通过批量插入来改善这一点?在插入之前将这些文档存储在数组中会是一个好主意吗?那么,在插入之前我应该​​存储多少文件?将jsons写入文件,然后使用mongoimport会更快吗?

我感谢任何建议.

解决方法:

Storing these documents on an array before inserting would be a good idea?

是的,很有可能.它减少了往返数据库的次数.您应该监视您的系统,由于IO等待,它在插入时可能会闲置很多(也就是说,开销和线程同步比实际数据传输要花费更多时间).

How many documents should I store before inserting, then?

很难说,因为它取决于许多因素.经验法则:1,000-10,000.您将不得不尝试一下.在较旧的mongodb版本中,整个批次不得超过16MB的文档大小限制.

Writing the jsons into a file and then using mongoimport would be faster?

不可以,除非您的代码有缺陷.这意味着您必须复制两次数据,并且整个操作应与IO绑定.

另外,最好先添加所有文档,然后再添加任何索引,而不要反过来添加索引(因为这样,每次插入时都必须修复索引)

上一篇:pymongo的runco​​mmand中使用“ from”作为kwarg键


下一篇:记录面试题