YCSB Mongodb _id

时间:2016-04-19 08:31:39

标签: mongodb ycsb

我使用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"),

因此,当我尝试插入大量文档时,冲突很容易理解。

那么我该怎么办才能解决冲突?

1 个答案:

答案 0 :(得分: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   

插入相同的密钥。

如果您想运行基准测试,我认为您不必担心错误。无论如何,如果您不想看到错误,请更改您的工作量,替换insert by update。