我试图从谷歌资源提供mongoDB(版本3.2.4)弧,但它需要太多的时间,即使有一个体面的配置(MBP中2014 ,2.2 GHz Intel Core i7,16GB)。MongoDB bulk.execute()花费太多的时间来插入无序
对于原始文件中890万行中的每一行,我创建了一个doc
和bulk.insert(doc);
它成无序的批量。
插入500个之后,我做了bulk.execute()
并重复这个过程,直到它们全部被添加到DB中,这从来不会发生,因为每插入一千个文档需要超过一分钟的时间,我肯定不会有8,9k分钟等待它。
这里不用代码:
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
} else {
//connected
console.log('Connection established to', url);
var bulk = db.collection('bigrams').initializeUnorderedBulkOp();
const rl = readline.createInterface({
input: fs.createReadStream(path+filename)
});
rl.on('line', function (line) {
var stringArray = line.split("\t");
var firstPart = stringArray[0]+'\t'+stringArray[1]+'\t'+stringArray[2]+"\t";
var head_token = stringArray[0];
var syntatic_ngram = stringArray[1].split(" ");
var total_count = stringArray[2];
var counts_by_year = line.replace(firstPart,'').split("\t");
var doc = {
"head token" : head_token,
"syntatic ngram" : syntatic_ngram,
"total count" : total_count,
"counts by year" : counts_by_year
};
count++;
bulkCount++;
if (bulkCount == bulkSize) {
console.log("BulkSize reached. Executing...");
bulk.execute();
bulkCount = 0;
}
console.log("bulk inserted count:"+count);
bulk.insert(doc);
});
rl.on('end', function(){
bulk.execute();
db.close();
});
}
});
P.S.:The第一10K插入,即前20 bulk.execute()
的过程非常快<1米。之后,处理时间增加。 ): 任何sugestions?谢谢。
请在您的文章中提及MongoDB版本,硬件配置,MongoDB数据库类型 – Saleem
您是否有任何额外的索引设置为上述集合? – woozyking
代码就是我工作过的所有东西,其实我只是插入在构建DB之后,我将处理索引。 –