Azure cosmosdb 区分分区键&;Azure Cosmos DB中的分区密钥范围

Azure cosmosdb 区分分区键&;Azure Cosmos DB中的分区密钥范围,azure-cosmosdb,partitioning,Azure Cosmosdb,Partitioning,我很难理解cosmosdb中分区键和分区键范围之间的区别。我通常理解cosmos db中的分区键是每个文档中的JSON属性/路径,用于在多个分区之间均匀分布数据,以避免任何不均匀的“热分区”——分区键决定文档的物理位置 但我不清楚分区键的范围是什么……这只是一个从第一个到最后一个按集合中每个单独分区分组的文本分区键的范围吗?我知道可以通过对端点执行GET请求来找到范围https://{databaseaccount}.documents.azure.com/dbs/{db id}/colls/{

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

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


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

分区键范围只是按映射到的物理分区分组的分区键的集合。 因此,在本例中,您将得到5个pkranges,每个pkranges都有
min/max
分区键值


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

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

分区键范围只是按映射到的物理分区分组的分区键的集合。 因此,在本例中,您将得到5个pkranges,每个pkranges都有
min/max
分区键值


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

“分区键范围只是按映射到的物理分区键分组的分区键的集合。”我想您在这里谈论的是分区键值的集合,对吗?一个集合总是有一个分区键,但该分区键可以有不同的值(取决于各个文档)。例如,如果我有一个
Users
集合,并且我的分区键是每个用户配置文件的
City
属性,那么我有一个分区键(
user.City
),但该键有一个不同值的列表(我有用户的不同城市的列表)@JJuice你是对的,当然,我说的是
partitionKey
值。总是有一个而且只有一个
partitionKey
属性可以有很多值,并且这些值可以(不是必须)映射到不同的物理分区(取决于拆分现有分区和引入新分区的条件)。“分区键范围只是按映射到的物理分区键分组的分区键的集合。”我想您在这里谈论的是分区键值的集合,对吗?一个集合总是有一个分区键,但该分区键可以有不同的值(取决于各个文档)。例如,如果我有一个
Users
集合,并且我的分区键是每个用户配置文件的
City
属性,那么我有一个分区键(
user.City
),但该键有一个不同值的列表(我有用户的不同城市的列表)@JJuice你是对的,当然,我说的是
partitionKey
值。总是有一个而且只有一个
partitionKey
属性可以有很多值,并且这些值可以(不是必须)映射到不同的物理分区(取决于拆分现有分区和引入新分区的条件)。