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