Criar contêineres com chave de partição grande

APLICA-SE A: NoSQL

A Azure Cosmos DB utiliza um esquema de partição baseado em hash para alcançar o dimensionamento horizontal de dados. Todos os contêineres do Azure Cosmos DB criados antes de 3 de maio de 2019 usam uma função de hash que calcula hash com base nos primeiros 101 bytes da chave de partição. Se houver várias chaves de partição que tenham os mesmos primeiros 101 bytes, essas partições lógicas serão consideradas como a mesma partição lógica pelo serviço. Isso pode levar a problemas como cota de tamanho de partição incorreta, índices exclusivos sendo aplicados incorretamente nas chaves de partição e distribuição desigual de armazenamento. Chaves de partição grandes são introduzidas para resolver esse problema. O Azure Cosmos DB agora oferece suporte a chaves de partição grandes com valores de até 2 KB.

Chaves de partição grandes são suportadas habilitando uma versão aprimorada da função hash, que pode gerar um hash exclusivo a partir de chaves de partição grandes de até 2 KB. Como prática recomendada, a menos que você precise de suporte para um SDK ou aplicativo mais antigo do Azure Cosmos DB que não ofereça suporte a esse recurso, é sempre recomendável configurar seu contêiner com suporte para chaves de partição grandes.

Criar uma chave de partição grande (portal do Azure)

Os contêineres criados usando o portal do Azure usam uma chave de partição grande por padrão.

Criar uma chave de partição grande (PowerShell)

Para criar um contêiner com suporte de chave de partição grande, consulte,

Criar uma chave de partição grande (SDK do .NET)

Para criar um contêiner com uma chave de partição grande usando o SDK do .NET, especifique a PartitionKeyDefinitionVersion.V2 propriedade. O exemplo a seguir mostra como especificar a propriedade Version dentro do objeto PartitionKeyDefinition e defini-la como PartitionKeyDefinitionVersion.V2.

Nota

Por padrão, todos os contêineres criados usando o .NET SDK V2 não oferecem suporte a chaves de partição grandes. Por padrão, todos os contêineres criados usando o .NET SDK V3 suportam chaves de partição grandes.

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

Versões do SDK suportadas

As chaves de partição grandes são suportadas com as seguintes versões mínimas de SDKs:

Tipo de SDK Versão Mínima
.NET 1.18
Sincronização Java 2.4.0
Java Async 2.5.0
API REST versão superior à 2017-05-03 utilização do cabeçalho do x-ms-version pedido.
Modelo do Resource Manager versão 2 usando a "version":2 propriedade dentro do partitionKey objeto.

Atualmente, não é possível usar contêineres com chave de partição grande no Power BI e nos Aplicativos Lógicos do Azure. Você pode usar contêineres sem uma chave de partição grande desses aplicativos.

Próximos passos