建立具有大型分割區索引鍵的容器

適用於: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 個位元組] 選項。 如果您不需要大型分割區索引鍵,或您應用程式執行所在的 SDK 版本比 1.18 還舊,則請取消選取此核取方塊。

Create large partition keys using Azure portal

建立大型分割區索引鍵 (PowerShell)

若要建立具有大型分割區索引鍵支援的容器,請參閱,

建立大型分割區索引鍵 (.NET SDK)

若要使用 .NET SDK 建立具有大型分割區索引鍵的容器,請指定 PartitionKeyDefinitionVersion.V2 屬性。 下列範例會示範如何在 PartitionKeyDefinition 物件中指定 Version 屬性,並將其設定為 PartitionKeyDefinitionVersion.V2。

注意

根據預設,使用 .NET SDK 第 2 版所建立的容器全都不支援大型分割區索引鍵。 根據預設,使用 .NET SDK 第 3 版所建立的容器全都會支援大型分割區索引鍵。

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

支援的 SDK 版本

下列 SDK 的最小版本會支援大型分割區索引鍵:

SDK 類型 最小版本
.NET 1.18
Java sync 2.4.0
Java Async 2.5.0
REST API 版本高於 2017-05-03,藉由使用 x-ms-version 要求標頭。
Resource Manager 範本 第 2 版,藉由在 partitionKey 物件內使用 "version":2 屬性。

目前,您無法在 Power BI 和 Azure Logic Apps 內使用具有大型分割區索引鍵的容器。 您可以從這些應用程式使用沒有大型分割區索引鍵的容器。

下一步