【问题标题】:Azure DocumentDb Consistency level suggestionAzure DocumentDb 一致性级别建议
【发布时间】:2015-01-22 21:01:16
【问题描述】:

我已设置 Azure 批处理以同时读取多个 csv 文件并写入 Azure DocumentDb。我需要关于最适合我的一致性级别的建议。

我通读了一致性级别文档 (http://azure.microsoft.com/en-us/documentation/articles/documentdb-consistency-levels/),但无法将我的业务案例与其中提供的选项联系起来。

我的过程 按 ID 获取文档
-如果找到然后将提取文档的副本,更新更改并替换它。
-如果找不到,创建一个新条目。

【问题讨论】:

  • 您关心的问题是什么?您是否担心多个进程同时写入文档(这里关注的是性能),或者担心客户端从 docdb 读取的数据在执行写入时可能已过时?

标签: azure batch-processing azure-cosmosdb data-consistency


【解决方案1】:

如果您的写入和读取来自同一进程(或者您可以共享 documentclient 的实例),那么会话一致性将为您提供最佳性能,同时确保您获得一致的读取。这是因为每个 SDK 都管理会话令牌,以确保读取转到已看到写入的副本。即使您不这样做,在您的情况下,如果您使用相同的文档 ID,写入也会失败。在一个集合中,文档 ID 保证是唯一的。

短版 - 会话一致性(默认)可能是一个不错的选择。

【讨论】:

  • 我的写入和读取来自我的控制台应用程序,该应用程序同时在多台机器上运行@多个实例(Azure 批处理)。即使在这种情况下,会话一致性也是最好的?
  • 在这种情况下,您将看到最终一致的跨实例读取,因为它们不共享会话令牌。但是,文档 ID 在集合中是唯一的。如果您碰巧读到过时的内容,然后插入一个存在的文档,您将遇到冲突。然后,您可以通过替换文档、丢弃添加/更新或转储到死信队列来处理此冲突。取决于数据的性质和应用程序的需求。我试图让您远离设置强一致性,因为使用默认(会话)设置您会看到更好的性能。
猜你喜欢
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2017-01-09
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多