initializeUnorderedBulkOperation 和 initializeOrderedBulkOperation 的确切区别和 advantages/disadvantages 是什么?
What is the exact difference and advantages/disadvantages of initializeUnorderedBulkOperation and initializeOrderedBulkOperation?
我正在 java 中开发一项功能,我必须使用 mongoDb 执行 BulkWriteOperation
。在这里,我遇到了两种类型的 BulkWriteOperation:
initializeUnorderedBulkOperation()
initializeOrderedBulkOperation()
以上两点我都参考了this。
性能方面的确切区别是什么,应该首选哪个?
我也想记录异常中的重复记录,这样日志文件就会包含重复项,以后可以对其进行分析。
部分 "exact" 区别在于方法的命名,一个是 "Orderred",另一个是 "Un-Orderred"。但不仅如此。
Orderred:当然会按照创建时的相同顺序执行批处理中的语句。如果任何语句失败,则批处理将停止在那一点(不是回滚)和 return WriteResult 中的错误。
Un-Orderred:不保留批处理中的创建顺序执行,可以按任意顺序并行处理。如果发生任何错误,而不是 returnWriteResponse 中的异常结果,错误只是作为 Write 响应中的列表报告
因此 "Orderred" will be in order and fail out at any error, whereas "UnOrderred" 将提交所有批处理操作,但仅在响应中报告错误。
UnOrderred 可能 return 更快,因为它不依赖顺序执行。但是,如果您需要按特定顺序执行批处理操作,则 Orderred 是正确的方法。
我正在 java 中开发一项功能,我必须使用 mongoDb 执行 BulkWriteOperation
。在这里,我遇到了两种类型的 BulkWriteOperation:
initializeUnorderedBulkOperation()
initializeOrderedBulkOperation()
以上两点我都参考了this。 性能方面的确切区别是什么,应该首选哪个?
我也想记录异常中的重复记录,这样日志文件就会包含重复项,以后可以对其进行分析。
部分 "exact" 区别在于方法的命名,一个是 "Orderred",另一个是 "Un-Orderred"。但不仅如此。
Orderred:当然会按照创建时的相同顺序执行批处理中的语句。如果任何语句失败,则批处理将停止在那一点(不是回滚)和 return WriteResult 中的错误。
Un-Orderred:不保留批处理中的创建顺序执行,可以按任意顺序并行处理。如果发生任何错误,而不是 returnWriteResponse 中的异常结果,错误只是作为 Write 响应中的列表报告
因此 "Orderred" will be in order and fail out at any error, whereas "UnOrderred" 将提交所有批处理操作,但仅在响应中报告错误。
UnOrderred 可能 return 更快,因为它不依赖顺序执行。但是,如果您需要按特定顺序执行批处理操作,则 Orderred 是正确的方法。