【问题标题】:How to decide a good partition key for Azure Cosmos DB如何为 Azure Cosmos DB 确定一个好的分区键
【发布时间】:2018-06-16 01:02:22
【问题描述】:

我是 Azure Cosmos DB 的新手,但我想对以下内容有一个生动的了解:

  1. 什么是分区键?

目前我的理解很浅——>相同partition key的item会去同一个partition进行存储,这样可以在系统变大的时候更好的进行负载均衡。

  1. 如何决定一个好的分区键? 有人可以举个例子吗?

非常感谢!

【问题讨论】:

  • this video 更好地说明了您正在搜索的答案,您可以在其中找到非常好的解释和示例。特别是:1)第一个问题的答案从 0.58 分钟开始 2)第二个问题的答案从 5.50 分钟开始
  • 非常感谢您的帮助!!

标签: azure azure-cosmosdb data-partitioning


【解决方案1】:

1.什么是分区键?

在 azure cosmos db 中,有两个分区:physical partitionlogical partition

A.物理分区是固定数量的保留 SSD 支持的存储与可变数量的计算资源相结合。

B.逻辑分区是物理分区中的一个分区,它存储与单个分区键值关联的所有数据。

我认为您提到的分区键是逻辑分区键。分区键充当数据的逻辑分区,并为 Azure Cosmos DB 提供跨物理分区分布数据的自然边界。更多详细信息,您可以参考How does partitioning work.

2.如何确定一个好的分区键?有人可以举个例子吗?

您需要考虑选择具有广泛值范围甚至访问模式的属性名称。理想的分区键是在查询中频繁出现的过滤器,并且具有足够的基数以确保您的解决方案具有可扩展性。

例如,您的数据具有名为 id 和 color 的字段,并且您更频繁地查询颜色作为过滤器。您需要为分区键选择颜色而不是 id,这对您的查询性能更有效。因为每个项目都有不同的 id 但可能有相同的颜色。它有广泛的范围。此外,如果添加颜色,分区键是可扩展的。

更多详情,请阅读Partition and scale in Azure Cosmos DB

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您必须根据工作负载选择分区。它们可以分为两种。

    • 重读
    • 写重

    读取繁重的工作负载是指读取的数据多于写入的数据,例如产品目录,其中目录的插入/更新频率较少,而浏览产品的人较多。

    写入繁重的工作负载是数据写入多于读取的工作负载。常见场景是物联网设备从多个传感器发送多个数据。您将向 Cosmos DB 写入大量数据,因为您可能每秒都会获取数据。

    对于读取繁重的工作负载,选择分区键,该属性在过滤查询中使用。产品示例将是产品 ID,主要用于在用户想要阅读信息和浏览其评论时获取数据。

    对于写入繁重的工作负载,选择属性更唯一的分区键。例如,在物联网场景中,使用deviceid_signaldatetime等分区键,将发送信号的device-id串联起来,信号的DateTime更具唯一性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多