我是 Azure Cosmos DB 的新手,但我想生动地了解:
我现在的理解还很浅 -> 具有相同分区键的项目将去同一个分区存储,当系统变大时,这可以更好地平衡负载。
非常感谢!
您必须根据您的工作负载选择分区。它们可以分为两类。
读取繁重是指读取的数据多于写入的数据,例如产品目录,其中目录的插入/更新频率较少,而浏览产品的人较多。
写入 繁重的工作负载是指写入的数据多于读取的数据。常见场景是物联网设备从多个传感器发送多个数据。您将向 Cosmos DB 写入大量数据,因为您可能每秒都会获取数据。
对于 读取繁重的工作负载 选择分区键,其中该属性用于 筛选查询。产品示例将是产品 id,它主要用于当用户想要阅读信息并浏览其评论时获取数据。
对于写入繁重的工作负载选择分区键,其中属性更唯一。例如,在IoT场景中,使用deviceid_signaldatetime这样的分区键,它是串联发送信号的device-id,信号的DateTime更具有唯一性。
1.什么是分区键?
在 azure cosmos db 中,有两个分区:
physical partition
和 logical partition
A.物理分区是固定数量的预留 SSD 支持的存储与可变数量的计算资源相结合。
B.逻辑分区是物理分区中的一个分区,它存储与单个分区键值关联的所有数据。
我认为你提到的分区键是逻辑分区键。分区键充当数据的逻辑分区,为Azure Cosmos DB提供跨物理分区分布数据的自然边界。更多详细信息,您可以参考如何分区工作吗。
2.如何决定一个好的分区键?有人可以举个例子吗?
您需要考虑选择一个具有广泛值范围且具有均匀访问模式的属性名称。理想的分区键是在查询中经常作为过滤器出现的键,并且具有足够的基数以确保您的解决方案可扩展。
例如,您的数据具有名为
id
和 color
的字段,并且您更频繁地查询 color
作为过滤器。您需要选择 color
,而不是 id
作为分区键,这样对查询性能更有效。因为每个项目都有不同的 id
,但也可能有相同的 color
。它的范围很广。此外,如果添加 color
,则分区键是可扩展的。
更多详细信息,请阅读Azure Cosmos DB 中的分区和缩放。
希望对您有帮助。