建立具有大型分割區索引鍵的容器
適用於: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 還舊,則請取消選取此核取方塊。
建立大型分割區索引鍵 (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 內使用具有大型分割區索引鍵的容器。 您可以從這些應用程式使用沒有大型分割區索引鍵的容器。