将数据写入远程mongodb数据库

时间:2016-08-30 06:52:20

标签: java mongodb networking mongodb-query

我正在逐行读取CSV文件并将数据发送到mongodb数据库。大约需要2分钟。当db和文件在同一台机器上时,从所有文件读取,处理和写入数据到mongodb。当数据库位于我网络中的另一台机器上时,大约需要5分钟。它在远程机器上花费的时间更多。任何人都可以帮我减少时间吗?感谢。

2 个答案:

答案 0 :(得分:0)

减少处理时间解决问题的方法。

读取CSV文件并将其放入MongoDB使用ETL,如Kettle。

http://wiki.pentaho.com/display/BAD/Write+Data+To+MongoDB

这将增加从CSV读取到MongoDB中的写入时间。

将数据放入远程计算机的最简单方法。

导出本地数据库中的数据并将其导入远程计算机。

https://docs.mongodb.com/v2.6/core/import-export/

希望它有帮助!

答案 1 :(得分:0)

我看到您正在使用Java加载Mongo数据库。

最新版本的Java驱动程序允许批量操作,因此您可以将一批插入发送到mongo而不是逐个发送。这将大大加快mongoDB中的插入速度。

DBCollection collection = db.getCollection("my_collection");
List<DBObject> list = new ArrayList<>();
for(int i = 0; i < 100; i++){
    //generate your datas
    BasicDBObject obj = new BasicDBObject("key", "value");
    list.add(obj);
}
collection.insert(list);//bulk insert of 100 obj!

自Mongo 2.6以来可以使用:https://docs.mongodb.com/manual/reference/method/Bulk.insert/