mongoDB(バージョン3.2.4)にGoogle Ngramsからアークを供給しようとしていますが、まともな設定でも時間がかかりすぎています(MBP Mid 2014 、2.2 GHz Intel Core i7、16 GB)MongoDB bulk.execute()は、順不同で挿入するには時間がかかります
元のファイルの8,900,000行ごとに、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メートル本当に速いプロセスです。その後、処理時間が長くなります。 ): 訴訟はありますか?ありがとうございました。
あなたの投稿にMongoDBのバージョン、ハードウェア構成、MongoDBデータベースの種類を言及してください。 – Saleem
上記のコレクションに追加のインデックスを設定していますか? – woozyking
コードは私が取り組んできたすべてのものです。 DBを構築した後、私はインデックスについて作業します。 –