我正在研究java中的一个功能,我必须使用mongoDb进行BulkWriteOperation
。在这里,我遇到了两种类型的BulkWriteOperation:
initializeUnorderedBulkOperation()
initializeOrderedBulkOperation()
我已经为上述两个方面提到了this。 性能方面的确切差异是什么,应该首选哪些?
我还想在异常中记录重复记录,以便日志文件包含重复项,并可以在以后对其进行分析。
答案 0 :(得分:3)
“确切”差异的一部分在于方法的命名,其中一个是“Orderred”而另一个是“Un-Orderred”。但除此之外还有一点点。
Orderred :当然按照创建它们的顺序执行批处理中的语句。如果任何语句失败,那么批处理执行将在此时停止(不是回滚)并在WriteResult中返回错误。
Un-Orderred :不会在批处理中预先创建创建顺序,并且可以按任何顺序并行处理。如果发生任何问题,而不是在WriteResponse中返回异常结果,则只会将错误报告为Write响应中的列表
因此,"Orderred"将按顺序排列并在出现任何错误时失败,而"UnOrderred"将提交所有批处理操作,但只报告响应中的错误。
由于不依赖于顺序执行,UnOrderred可能会更快地返回。但是,如果您需要按特定顺序执行批量操作,则Orderred是正确的方法。