使用大分区键创建容器

适用范围: NoSQL

Azure Cosmos DB 使用基于哈希的分区方案实现数据的水平缩放。 在 2019 年 5 月 3 日之前创建的所有 Azure Cosmos DB 容器都使用哈希函数根据分区键的前 101 个字节计算哈希。 如果多个分区键的前 101 个字节相同,则服务会将这些逻辑分区视为同一逻辑分区。 这可能导致分区大小配额不正确、跨分区键应用的唯一索引不正确,以及存储分布不均等问题。 为了解决此问题,我们引入了大分区键。 Azure Cosmos DB 现在支持其值最高为 2 KB 的大分区键。

可通过启用增强版哈希函数来支持大分区键,该增强版可以使用最高为 2 KB 的大分区键生成唯一哈希。 最佳做法是,除非需要支持不支持此功能的旧版 Azure Cosmos DB SDK 或应用程序,否则始终建议配置支持大分区键的容器。

创建大分区键(Azure 门户)

若要在使用 Azure 门户创建新容器时创建大分区键,请选中“我的分区键大于 101 字节”选项。 如果不需要大分区键,或者应用程序在 1.18 之前的 SDK 版本上运行,请取消选中该复选框。

Create large partition keys using Azure portal

创建大分区键 (PowerShell)

若要创建具有大分区键支持的容器,请参阅

创建大分区键 (.NET SDK)

若要使用 .NET SDK 创建具有大分区键的容器,请指定 PartitionKeyDefinitionVersion.V2 属性。 以下示例说明如何在 PartitionKeyDefinition 对象中指定 Version 属性,以及如何将其设置为 PartitionKeyDefinitionVersion.V2。

注意

默认情况下,使用 .NET SDK V2 创建的所有容器都不支持大分区键。 默认情况下,使用 .NET SDK V3 创建的所有容器都支持大分区键。

await database.CreateContainerAsync(
    new ContainerProperties(collectionName, $"/longpartitionkey")
    {
        PartitionKeyDefinitionVersion = PartitionKeyDefinitionVersion.V2,
    })

支持的 SDK 版本

以下 SDK 最低版本支持大分区键:

SDK 类型 最低版本
.NET 1.18
Java 同步 2.4.0
Java 异步 2.5.0
REST API 使用 x-ms-version 请求标头时版本高于 2017-05-03
Resource Manager 模板 版本 2(通过使用 partitionKey 对象中的 "version":2 属性)。

目前不能在 Power BI 和 Azure Logic Apps 中将容器与大分区键配合使用。 在这些应用程序中,可以在没有大分区键的情况下使用容器。

后续步骤