【问题标题】:What is the exact difference and advantages/disadvantages of initializeUnorderedBulkOperation and initializeOrderedBulkOperation?initializeUnorderedBulkOperation 和 initializeOrderedBulkOperation 的确切区别和优点/缺点是什么?
【发布时间】:2015-06-30 07:08:56
【问题描述】:

我正在研究 java 中的一个功能,我必须使用 mongoDb 执行 BulkWriteOperation。这里我遇到了两种BulkWriteOperation:

  • initializeUnorderedBulkOperation()
  • initializeOrderedBulkOperation()

我已经为上述两个都推荐了this。 性能方面的确切差异是什么,应该首选哪个?

我还想在异常中记录重复记录,以便日志文件包含重复记录,以便以后对其进行分析。

【问题讨论】:

    标签: java mongodb bulkinsert


    【解决方案1】:

    “确切”的部分区别在于方法的命名,一个是“有序”,另一个是“无序”。但不仅如此。

    • 有序:当然会按照创建语句的顺序执行批处理中的语句。如果任何语句失败,那么批处理执行将在该点停止(不是回滚)并在 WriteResult 中返回错误。

    • 无序:不保留批处理中的创建顺序以供执行,并且可以按任何顺序并行处理。如果发生任何情况,而不是在 WriteResponse 中返回异常结果,错误会简单地报告为写入响应中的列表

    所以"Orderred" 将按顺序运行并在任何错误时失败,而"UnOrderred" 将提交所有批处理操作但只在响应中报告错误。

    由于不依赖顺序执行,UnOrderred 可能会更快地返回。但是,如果您需要按特定顺序执行批处理操作,Orderred 是正确的方法。

    【讨论】:

    • 好的。谢谢提供信息。那么在我的情况下,我应该更喜欢 Un-Orderred?
    • @Nakul91 你的情况是什么? (我不阅读外部链接,它应该在你的问题中)。区别都说清楚了,看你需要哪一个 1. 批次按特定顺序执行, 2. 准备按任何顺序处理,并在检查时处理错误处理。
    • 考虑到答案,如果发生一些异常,我不想在两者之间停止执行。我不希望任何特定的订单也需要检查。所以案例 2 适合我。
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2013-06-30
    • 2011-03-23
    相关资源
    最近更新 更多