【问题标题】:CosmosDB transactions per partition每个分区的 CosmosDB 事务
【发布时间】:2017-10-27 05:04:05
【问题描述】:

我正在研究 CosmosDB 分区工具,到目前为止我得到的是它对性能有好处。它确实可以帮助我们避免扇出查询,但我遇到了一个关于分区的问题。对于写入分区,如果我有不同类型的文档,可以是数千个,属于同一个分区,写入操作会很慢,但是如果我给它们不同的分区键,那么我将失去事务行为,因为存储过程的范围为一笔交易。

我的用例是我在同一个集合中有不同类型的文档,在给定时间我将更新和插入数千个不同类型的文档,我必须在同一个事务中这样做,这意味着我必须使用相同的键,但如果我这样做,那么我将执行 CosmosDB 中不建议的 HOT 写入操作。任何有关如何解决此问题的帮助将不胜感激。

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    人们使用存储过程来批处理他们的文档,而今天它确实将您限制在一个分区中。但是,请注意分区键的其他限制,以便您的文档在不同的分区中散开。因此,您的一批可以用于一个分区键,而下一批可以用于另一个。

    在这里阅读更多 https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

    希望对您有所帮助。

    拉法特

    【讨论】:

    • 您好 Rafat,感谢您在这里的及时回复。我明白你在说什么,但为了澄清,我会给你一个例子来帮助我更好地理解它。我有两个分区,比如说一个用于城市,一个用于国家。如果我更新或插入国家作为一批,城市作为一批,正如你所提到的,我认为它不会被包含在一个交易中,或者是吗?但是如果我只为城市和国家创建一个租户分区,那么我可以在一个事务下扭曲它们,但该请求仍然必须在一批中完成,不是吗?
    • 你的理解是正确的。两个分区意味着两个事务。也许考虑一个复合键“国家:城市”,它会给你一个单一的交易。
    【解决方案2】:

    这很棘手.. 目前我在单个分区中确实有大量文档,也许稍后我需要重新设计集合。现在我在 CosmosDB 中使用批量插入/更新库。 Link https://docs.microsoft.com/en-us/azure/cosmos-db/bulk-executor-overview 大数据插入/更新速度更快,它的 Microsoft 支持库,但它支持事务行为,但仅使用单个分区。所以此刻,我是安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多