Compartilhar via


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

APLICA-SE A: NoSQL

O Azure Cosmos DB usa o esquema de particionamento baseado em hash para atingir o dimensionamento horizontal dos dados. Todos os contêineres do Azure Cosmos DB criados antes de 3 de maio de 2019 usam uma função de hash que computa o 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 sendo 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 teclas de partição e distribuição desigual do armazenamento. Chaves de partição grandes são introduzidas para resolver esse problema. O Azure Cosmos DB agora dá suporte a chaves de partição grandes com valores de até 2 KB.

Chaves de partição grandes têm suporte habilitando uma versão aprimorada da função de hash, que pode gerar um hash exclusivo 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 que não dá 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)

Para criar uma chave de partição grande, ao criar um contêiner usando o portal do Azure, marque a opção Minha chave de partição é maior que 101 bytes. Desmarque a caixa de seleção se você não precisar de chaves de partição grandes ou se tiver aplicativos em execução na versão de SDKs com mais de 1,18.

Criar chaves de partição grandes usando o portal do Azure

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

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

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 propriedade PartitionKeyDefinitionVersion.V2. O exemplo a seguir mostra como especificar a propriedade Versão dentro do objeto PartitionKeyDefinition e defini-la como PartitionKeyDefinitionVersion.V2.

Observação

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

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

Versões com suporte SDK

As chaves de partição grandes têm suporte com as seguintes versões mínimas dos SDKs:

Tipo de SDK Versão mínima
.NET 1,18
Sincronização de Java 2.4.0
Java Assíncrono 2.5.0
API REST versão superior a 2017-05-03 usando o cabeçalho de solicitação x-ms-version.
Modelo do Resource Manager versão 2 usando a propriedade "version":2 dentro do objeto partitionKey.

No momento, você não pode usar contêineres com chave de partição grande dentro do Power BI e Aplicativos Lógicos do Azure. Você pode usar contêineres sem uma chave de partição grande desses aplicativos.

Próximas etapas