繁体   English   中英

如何为 Azure Cosmos DB 确定一个好的分区键

[英]How to decide a good partition key for Azure Cosmos DB

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

  1. 什么是分区键?

目前我的理解很肤浅 -> 具有相同分区键的项目将转到相同的分区进行存储,当系统变大时可以更好地进行负载平衡。

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

非常感谢!

1.什么是分区键?

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

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

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

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

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

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

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

更多详细信息,请阅读Azure Cosmos DB 中分区和缩放

希望对你有帮助。

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

  • 重读
  • 写重

读取繁重的工作量是读取的数据多于写入的数据,例如产品目录,目录的插入/更新频率较低,浏览产品的人较多。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM