区分 Azure Cosmos DB 中的分区键和分区键范围

ema*_*lmb 4 partitioning azure-cosmosdb

我很难理解 Cosmos DB 中分区键和分区键范围之间的区别。我通常理解 cosmos db 中的分区键是每个文档中的 JSON 属性/路径,用于在多个分区之间均匀分布数据以避免任何不均匀的“热分区”——分区键决定文档的物理位置。

但我不清楚分区键范围是什么......这只是从第一个到最后一个按集合中的每个单独分区分组的文字分区键范围吗?我知道可以通过对端点执行 GET 请求来找到范围,https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/pkranges但只是在概念上想确保我理解。也不清楚如何细化查看特定文档所属的特定分区键。

https://docs.microsoft.com/en-us/rest/api/cosmos-db/get-partition-key-ranges

dee*_* zg 6

您在要用作分区键的文档上定义属性。Cosmos db 对集合中所有文档的该属性的值进行哈希处理,并将不同的分区键映射到不同的物理分区。随着时间的推移,您的集合将会增长,例如,您最终可能会拥有分布在 5 个物理分区上的 100 个逻辑分区。

分区键范围只是按它们映射到的物理分区分组的分区键的集合。因此,在此示例中,您将获得 5 个 pkrange,min/max每个pkrange 带有分区键值。

请注意,pkranges 可能会发生变化,因为将来随着您的集合的增长,物理分区将被拆分,导致某些分区键移动到新的物理分区,从而导致先前范围的一部分移动到新位置。