Поделиться через


Создание контейнеров с большим ключом раздела

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Azure Cosmos DB использует схему секционирования на основе хэша для достижения горизонтального масштабирования данных. Все контейнеры Azure Cosmos DB, созданные до 3 мая 2019 г., используют хэш-функцию, которая вычисляет хэш на основе первых 101 байт ключа секции. Если есть несколько ключей разделов, имеющих одинаковые первые 101 байт, эти логические разделы будут учтены службой как один логический раздел. Это может привести к таким проблемам, как неправильная квота на размер раздела, неправильное применение уникальных индексов к ключам раздела и неравномерное распределение хранилища. Для решения этой проблемы введены большие ключи разделов. Azure Cosmos DB теперь поддерживает большие ключи разделов со значениями до 2 КБ.

Большие ключи раздела поддерживаются путем включения расширенной версии хэш-функции, которая может генерировать уникальный хэш из больших ключей раздела размером до 2 КБ. Рекомендуется настроить контейнер с поддержкой больших ключей секций, если вам не нужна поддержка более старого пакета SDK или приложения Azure Cosmos DB, который не поддерживает эту функцию.

Создание большого ключа раздела (портал Azure)

Контейнеры, созданные с помощью портал Azure, используют большой ключ секции по умолчанию.

Создание большого ключа раздела (PowerShell)

Для создания контейнера с поддержкой большого ключа раздела, см.

Создание большого ключа раздела (пакет SDK для .NET)

Чтобы создать контейнер с большим ключом раздела с помощью пакета .NET SDK, укажите PartitionKeyDefinitionVersion.V2 свойство. В следующем примере показано, как указать свойство Version в объекте PartitionKeyDefinition и задать для него значение PartitionKeyDefinitionVersion.V2.

Примечание.

По умолчанию все контейнеры, созданные с помощью пакета SDK для .NET версии 2, не поддерживают большие разделы. По умолчанию все контейнеры, созданные с помощью пакета SDK для .NET версии 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 с помощью свойства "version":2 в объекте partitionKey.

В настоящее время невозможно использовать контейнеры с большим ключом раздела в Power BI и Azure Logic Apps. В этих приложениях можно использовать контейнеры без большого ключа раздела.

Следующие шаги