私はmongodbで約1億件のレコードを処理しようとしています。基本的に、各キー(処方番号)は約1300レコード(一意ではありません)に対応します。これらのキーにはインデックスが付けられています。
現在、pymongoで特定のキーをクエリして、これらの結果のセットを返し、Pythonで処理できるようにしています。
mongoのクエリは、最大のボトルネックです。クエリごとに約20秒かかります。現在のレートでは、すべてのレコードをクエリするのに400時間かかります。
これは、クエリを「説明」したときのように見えます。
db.prescriptions.find({'key':68565299}).explain()
{
"cursor" : "BasicCursor",
"nscanned" : 103578563,
"nscannedObjects" : 103578563,
"n" : 1603,
"millis" : 287665,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
そして、これは私が適切なインデックスを持っていることを示しています
> db.prescriptions.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "processed_data.prescriptions",
"name" : "_id_"
}
]
1つのサーバーインスタンスでこのデータ処理を実行しようとして、私はロッカーから離れていますか?(興味深いことに、トップを実行したときにCPUとRAMが最大になっていないようです。)
アドバイスをいただければ幸いです。
ありがとう!!