Partilhar via


Mesclar partições no Azure Cosmos DB (visualização)

APLICA-SE A: NoSQL MongoDB

Mesclar partições no Azure Cosmos DB (visualização) permite reduzir o número de partições físicas usadas para seu contêiner no local. Com a mesclagem, os contêineres fragmentados em taxa de transferência (têm baixo RU/s por partição) ou armazenamento (têm baixo armazenamento por partição) podem ter suas partições físicas retrabalhadas. Se a taxa de transferência de um contêiner tiver sido ampliada e precisar ser reduzida novamente, a mesclagem poderá ajudar a resolver problemas de fragmentação da taxa de transferência. Para a mesma quantidade de RU/s provisionados, ter menos partições físicas significa que cada partição física obtém mais do RU/s geral. Minimizar partições reduz a chance de limitar a taxa se uma grande quantidade de dados for removida de um contêiner e o RU/s por partição for baixo. A mesclagem pode ajudar a limpar partições vazias ou não utilizadas, resolvendo efetivamente problemas de fragmentação de armazenamento.

Introdução

Para começar a usar a mesclagem de partições, navegue até a página Recursos em sua conta do Azure Cosmos DB. Selecione e ative o recurso Mesclagem de partições (visualização).

Antes de habilitar o recurso, verifique se suas contas do Azure Cosmos DB atendem a todos os critérios de elegibilidade de visualização. Depois de ativar o recurso, ele leva de 15 a 20 minutos para entrar em vigor.

Atenção

Quando a mesclagem é habilitada em uma conta, somente solicitações do .NET SDK versão >= 3.27.0 ou Java SDK >= 4.42.0 ou Azure Cosmos DB Spark connector >= 4.18.0 serão permitidas na conta, independentemente de as mesclagens estarem em andamento ou não. As solicitações de outros SDKs (SDK .NET mais antigo, SDK Java mais antigo, qualquer SDK JavaScript, qualquer SDK Python, qualquer SDK Go) ou conectores sem suporte (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics e outros) serão bloqueadas e falharão. Confirme se atualizou o SDK para uma versão suportada antes de ativar a funcionalidade. Depois que o recurso é ativado ou desativado, pode levar de 15 a 20 minutos para se propagar totalmente para a conta. Se planeia desativar a funcionalidade depois de concluída a sua utilização, pode demorar 15 a 20 minutos até que sejam permitidos pedidos de SDKs e conectores que não sejam suportados para intercalação.

Screenshot of Features pane and Partition merge feature.

Para verificar se uma conta do Azure Cosmos DB é qualificada para a visualização, você pode usar o verificador de elegibilidade interno no portal do Azure. Na página de visão geral da conta do Azure Cosmos DB no portal do Azure, navegue até Diagnosticar e resolver problemas -Taxa de transferência e dimensionamento ->>Mesclagem de partição. Execute o diagnóstico Verificar elegibilidade para visualização de mesclagem de partição.

Screenshot of Throughput and Scaling content in Diagnose and solve issues page.

Screenshot of merge eligibility check with table of all preview eligibility criteria.

Como identificar contêineres a serem mesclados

Os contêineres que atendem a ambas as condições provavelmente se beneficiarão da fusão de partições:

  • Condição 1: O RU/s atual por partição física é <de 3000 RU/s
  • Condição 2: O armazenamento médio atual em GB por partição física é <de 20 GB

A condição 1 geralmente ocorre quando você já aumentou a escala do RU/s (geralmente para uma ingestão de dados) e agora deseja reduzir em estado estacionário. A condição 2 geralmente ocorre quando você exclui/TTL um grande volume de dados, deixando partições não utilizadas.

Condição 1

Para determinar o RU/s atual por partição física, na sua conta Cosmos, navegue até Métricas. Selecione a métrica Taxa de transferência de partição física e filtre seu banco de dados e contêiner. Aplique a divisão por PhysicalPartitionId.

Para contêineres que usam escala automática, essa métrica mostra o máximo de RU/s atualmente provisionado em cada partição física. Para contêineres que usam taxa de transferência manual, essa métrica mostra o RU/s manual em cada partição física.

No exemplo abaixo, temos um contêiner de escala automática provisionado com 5000 RU/s (escalas entre 500 - 5000 RU/s). Tem cinco partições físicas e cada partição física tem 1000 RU/s.

Screenshot of Azure Monitor metric Physical Partition Throughput in Azure portal.

Condição 2

Para determinar o armazenamento médio atual por partição física, primeiro encontre o armazenamento geral (dados + índice) do contêiner.

Navegue até Insights>Storage>Data & Index Usage. O armazenamento total é a soma dos dados e do uso do índice. No exemplo abaixo, o contêiner tem um total de 74 GB de armazenamento.

Screenshot of Azure Monitor storage (data + index) metric for container in Azure portal.

Em seguida, localize o número total de partições físicas. Essa métrica é o número distinto de PhysicalPartitionIds no gráfico PhysicalPartitionThroughput que vimos na Condição 1. No nosso exemplo, temos cinco partições físicas.

Finalmente, calcule: Armazenamento total em GB / número de partições físicas. No nosso exemplo, temos uma média de (74 GB / cinco partições físicas) = 14,8 GB por partição física.

Com base nas condições 1 e 2, nosso contêiner pode se beneficiar potencialmente da fusão de partições.

Mesclando partições físicas

No PowerShell, quando o sinalizador -WhatIf é passado, o Azure Cosmos DB executa uma simulação e retorna o resultado esperado da mesclagem. Esse resultado é retornado apesar da mesclagem em si não estar em execução. Quando o sinalizador não é passado, a mesclagem é executada no recurso. Quando concluído, o comando produz a quantidade atual de armazenamento em KB por partição física pós-mesclagem.

Gorjeta

Antes de executar uma mesclagem, é recomendável definir seu RU/s provisionado (RU/s manual ou autoscale max RU/s) o mais próximo possível do RU/s de estado estacionário desejado após a mesclagem, para ajudar a garantir que o sistema calcule um layout de partição eficiente.

Use Install-Module para instalar o módulo Az.CosmosDB com recursos de pré-lançamento ativados.

$parameters = @{
    Name = "Az.CosmosDB"
    AllowPrerelease = $true
    Force = $true
}
Install-Module @parameters

Para contêineres de taxa de transferência provisionados, use Invoke-AzCosmosDBSqlContainerMerge com o -WhatIf parâmetro para visualizar a mesclagem sem realmente executar a operação.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
    WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Inicie a mesclagem executando o mesmo comando sem o -WhatIf parâmetro.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Para bancos de dados de taxa de transferência compartilhada, inicie a mesclagem usando az cosmosdb mongodb database merge.

az cosmosdb mongodb database merge \
	--account-name '<cosmos-account-name>'                               
	--name '<cosmos-database-name>'                                
	--resource-group '<resource-group-name>'

Monitorar operações de mesclagem

A mesclagem de partições é uma operação de longa duração e não há SLA sobre quanto tempo leva para ser concluída. O tempo depende da quantidade de dados no contêiner e do número de partições físicas. Recomenda-se aguardar pelo menos 5-6 horas para que a mesclagem seja concluída.

Enquanto a mesclagem de partições estiver sendo executada em seu contêiner, se você alterar as configurações do contêiner (TTL, política de indexação, chaves exclusivas, etc.), a operação de mesclagem em andamento será cancelada. Se você aumentar seu RU/s enquanto uma mesclagem estiver em execução, a operação de mesclagem em andamento será cancelada e o RU/s do contêiner será atualizado com seu novo valor. Dependendo do RU/s solicitado, sua expansão pode ser instantânea ou levar mais tempo. Se você diminuir seu RU/s enquanto uma mesclagem estiver em execução, o RU/s será atualizado instantaneamente para o novo RU/s. A mesclagem em andamento continuará, com a mesma contagem de partições de destino com base no RU/s definido no momento em que a mesclagem foi acionada. Como prática recomendada, é recomendável aguardar até que a operação de mesclagem seja concluída antes de alterar as configurações de contêiner ou taxa de transferência.

Pode verificar se a intercalação ainda está em curso no Registo de Atividades, filtrando os eventos Intercalar as partições físicas de uma coleção MongoDB ou Intercalar as partições físicas de um contentor SQL.

Limitações

A seguir estão as limitações do recurso de mesclagem no momento.

Pré-visualizar critérios de elegibilidade

Para se inscrever na visualização, sua conta do Azure Cosmos DB deve atender a todos os seguintes critérios:

  • Sua conta do Azure Cosmos DB usa API para NoSQL ou MongoDB com versão >=3.6.
  • A conta do Azure Cosmos DB está a utilizar o débito aprovisionado (manual ou dimensionamento automático). A mesclagem não se aplica a contas sem servidor.
  • Sua conta do Azure Cosmos DB é uma conta de região de gravação única (atualmente não há suporte para mesclagem para contas de gravação de várias regiões).
  • Sua conta do Azure Cosmos DB não usa nenhum dos seguintes recursos:
  • Se você estiver usando a API para NoSQL, seu aplicativo deverá usar o SDK do Azure Cosmos DB .NET v3 (versão 3.27.0 ou superior) ou o SDK Java v4 (versão 4.42.0 ou superior). Quando a visualização de mesclagem está habilitada em sua conta, a conta não aceita solicitações enviadas de SDKs não .NET/Java ou versões mais antigas do .NET/Java SDK.
    • Não existem SDKs ou requisitos em termos de controladores para utilizar a funcionalidade com a API para MongoDB.
  • Sua conta do Azure Cosmos DB não usa nenhum conector sem suporte no momento:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • Extensão <do Azure Functions = 3.x (a extensão do Azure Functions 4.0 e superior é suportada)
    • Azure Search
    • Azure Cosmos DB Spark connector < 4.18.0
    • Qualquer biblioteca ou ferramenta de terceiros que tenha uma dependência de um SDK do Azure Cosmos DB que não seja SDK do .NET v3 = v3.27.0 ou SDK do Java v4 = >>4.42.0

Recursos e configuração da conta

  • A mesclagem só está disponível para API para contas NoSQL e MongoDB. Para contas da API para MongoDB, a versão da conta MongoDB deve ser 3.6 ou superior.
  • A mesclagem só está disponível para contas de gravação de uma única região. O suporte a contas de gravação em várias regiões não está disponível.
  • As contas que usam a funcionalidade de mesclagem também não podem usar esses recursos (se esses recursos forem adicionados a uma conta habilitada para mesclagem, a conta não poderá mesclar recursos):
  • Depois que um contêiner é mesclado, não é possível ler o feed de alterações com a hora de início. O suporte para este recurso está planejado para o futuro.

Requisitos do SDK (API apenas para NoSQL)

Contas com o recurso de mesclagem ativado são suportadas somente quando você usa a versão mais recente do SDK do .NET v3 ou do SDK do Java v4. Quando o recurso está habilitado em sua conta (independentemente de você executar a mesclagem), você só deve usar o SDK suportado usando a conta. Solicitações enviadas de outros SDKs ou versões anteriores não são aceitas. Contanto que você esteja usando o SDK suportado, seu aplicativo pode continuar a ser executado enquanto uma mesclagem está em andamento.

Encontre a versão mais recente do SDK suportado:

SDK Versões suportadas Link do gerenciador de pacotes
SDK do .NET v3 >= 3,27,0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Java SDK v4 >= 4,42,0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

O suporte para outros SDKs está planejado para o futuro.

Gorjeta

Você deve garantir que seu aplicativo tenha sido atualizado para usar uma versão compatível do SDK antes de se inscrever na visualização. Se você estiver usando um SDK herdado, siga o guia de migração apropriado:

Conectores não suportados

Se você se inscrever na visualização, os conectores a seguir falharão.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Aplicativos lógicos ¹
  • Extensão <do Azure Functions = 3.x (a extensão do Azure Functions 4.0 e superior é suportada) ¹
  • Azure Search ¹
  • Azure Cosmos DB Spark connector < 4.18.0
  • Qualquer biblioteca ou ferramenta de terceiros que tenha uma dependência de um SDK do Azure Cosmos DB que não seja SDK do .NET v3 = v3.27.0 ou SDK do Java v4 = >>4.42.0

¹ O suporte para estes conectores está planejado para o futuro.

Próximos passos