0

ycsb を使用して mongodb をテストします。
3000000 個のドキュメントをロードした後、挿入ステップを実行しようとしましたが、次の問題が発生しました。

Exception while trying bulk insert with 0 com.mongodb.MongoWriteException: insertDocument :: 
caused by :: 11000 E11000 duplicate key error 
index: ycsb.usertable.$_id_  dup key: { : "user451605437247003858" }

ロードステップを実行すると、各ドキュメントの _id がどういうわけか似ていることがわかりました

"_id" : "user1136", 
"_id" : "user1130" 

等々。それは私がよく会うようなものではありません

"_id" : ObjectId("55753c547e2596a4d07c2219"),

そのため、大量のドキュメントを挿入しようとしたときの競合は簡単に理解できます。

では、紛争を解決するにはどうすればよいでしょうか。

4

1 に答える 1

0

以下のように使用していたキーを想定しています。

"_id" : ObjectId("55753c547e2596a4d07c2219")

python ドライバーpymongoによって生成されます。

YCSB の mongo モジュールはjava driverを使用します。insert を呼び出すと、実際には次のように呼び出しています。

com.mongodb.client.MongoCollection<TDocument>.insertOne

どちらが投げますか

com.mongodb.MongoWriteException: E11000 duplicate key error collection   

同じキーを挿入したとき。

ベンチマークを実行したい場合は、エラーについて心配する必要はないと思います。とにかく、エラーを見たくない場合は、ワークロードを変更し、挿入を更新に置き換えてください。

于 2016-04-20T09:44:30.763 に答える