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.
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.
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.
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.
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:
- SDK do .NET v2 herdado: guia de migração do .NET SDK v3
- SDK Java v3 herdado: Guia de migração do Java SDK v4
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
- Saiba mais sobre como usar a CLI do Azure com o Azure Cosmos DB.
- Saiba mais sobre como usar o Azure PowerShell com o Azure Cosmos DB.
- Saiba mais sobre particionamento no Azure Cosmos DB.