Creación de contenedores con una clave de partición de gran tamaño

SE APLICA A: NoSQL

Azure Cosmos DB usa el esquema de partición basado en hash para lograr el escalado horizontal de los datos. Todos los contenedores de Azure Cosmos DB creados antes del 3 de mayo de 2019 usan una función hash que calcula el hash en función de los primeros 101 bytes de la clave de partición. Si hay varias claves de partición con los mismos 101 primeros bytes, el servicio considera que esas particiones lógicas son la misma partición lógica. Esto puede provocar problemas, como que la cuota de tamaño de la partición sea incorrecta, que los índices únicos se apliquen incorrectamente en las claves de partición y que el almacenamiento se distribuya de forma desigual. Para solucionar este problema, aparecieron las claves de partición de gran tamaño. Azure Cosmos DB ahora admite claves de partición de gran tamaño con valores hasta 2 KB.

Las claves de partición de gran tamaño se admiten mediante el uso de una versión mejorada de la función hash, que puede generar un hash único a partir de claves de partición de gran tamaño, de hasta 2 KB. Como procedimiento recomendado, a menos que necesite soporte para un SDK o una aplicación de Azure Cosmos DB antiguo que no admita esta característica, siempre se recomienda configurar el contenedor con compatibilidad con claves de partición grandes.

Creación de una clave de partición de gran tamaño (Azure Portal)

Para crear una clave de partición de gran tamaño, cuando crea un contenedor con Azure Portal, active la opción Mi clave de partición tiene más de 101 bytes. Desactive la casilla si no necesita claves de partición de gran tamaño o si tiene aplicaciones que ejecutan una versión de SDK anterior a 1.18.

Creación de claves de partición de gran tamaño con Azure Portal

Creación de una clave de partición de gran tamaño (PowerShell)

Para crear un contenedor con soporte de clave de partición grande, consulte,

Creación de una clave de partición de gran tamaño (SDK de .NET)

Para crear un contenedor con una clave de partición de gran tamaño mediante el SDK de .NET, especifique la propiedad PartitionKeyDefinitionVersion.V2. En el ejemplo siguiente se muestra cómo especificar la propiedad de versión dentro del objeto PartitionKeyDefinition y establecerla en PartitionKeyDefinitionVersion.V2.

Nota:

De forma predeterminada, todos los contenedores creados con el SDK V2 de .NET no admiten claves de partición de gran tamaño. De forma predeterminada, todos los contenedores creados con el SDK V3 de .NET admiten claves de partición de gran tamaño.

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

Versiones de SDK compatibles

Las claves de partición de gran tamaño se admiten con las siguientes versiones mínimas de SDK:

Tipo de SDK Versión mínima
.NET 1.18
Java Sync 2.4.0
Java Async 2.5.0
API DE REST Una versión superior a 2017-05-03 mediante el uso del encabezado de solicitudx-ms-version.
Plantilla de Resource Manager versión 2 mediante la propiedad "version":2 dentro del objeto partitionKey.

Actualmente, no se pueden usar contenedores con una clave de partición de gran tamaño dentro de Power BI ni de Azure Logic Apps. Puede usar contenedores sin una clave de partición de gran tamaño desde estas aplicaciones.

Pasos siguientes