Compartilhar via


Criar contêineres e bancos de dados do Azure Cosmos DB com dimensionamento automático

O Azure Cosmos DB permite configurar a taxa de transferência padrão (manual) ou de dimensionamento automático para bancos de dados e contêineres. O dimensionamento automático ajusta a taxa de transferência (RU/s) para corresponder à sua carga de trabalho, garantindo alto desempenho e eficiência de custo.

Casos de uso

A taxa de transferência provisionada de dimensionamento automático é ideal para cargas de trabalho críticas com padrões de tráfego variáveis ou imprevisíveis e que exigem SLAs (contratos de nível de serviço) para alto desempenho e escala. O dimensionamento automático dimensiona, por padrão, as cargas de trabalho com base na região e partição mais ativas. Para cargas de trabalho não uniformes que têm diferentes padrões de carga de trabalho entre regiões e partições, esse dimensionamento pode causar escalas desnecessárias. O dimensionamento dinâmico ou dimensionamento automático dinâmico é um aprimoramento do dimensionamento automático provisionado que ajuda no escala dessas cargas de trabalho não uniformes de forma independente com base no uso, por região e por nível de partição. O dimensionamento dinâmico ajuda a economizar custos se você geralmente experimenta partições quentes ou tem várias regiões.

Benefícios de dimensionamento automático

Os bancos de dados e contêineres do Azure Cosmos DB configurados com taxa de transferência provisionada de dimensionamento automático têm os seguintes benefícios:

  • Simples: O dimensionamento automático simplifica o gerenciamento de RU/s eliminando a necessidade de script personalizado ou dimensionamento manual.

  • Escalonável: os bancos de dados e contêineres escalam automaticamente a taxa de transferência provisionada conforme necessário. Não há interrupção em conexões de cliente, aplicativos ou SLAs do Azure Cosmos DB.

  • Econômico: O dimensionamento automático otimiza RU/s e custos reduzindo verticalmente quando não estiver em uso. Você paga apenas pelos recursos de que suas cargas de trabalho precisam por hora. Se você usar o total Tmax por 66% ou menos horas em um mês, o dimensionamento automático poderá economizar custos. O dimensionamento dinâmico também torna a adição de uma região secundária para alta disponibilidade mais econômica, pois cada região e partição são dimensionadas independentemente com base no uso. Saiba mais sobre como escolher entre o artigo de taxa de transferência provisionada padrão (manual) e de dimensionamento automático.

  • Altamente disponível: Bancos de dados e contêineres com dimensionamento automático usam o back-end do Azure Cosmos DB distribuído globalmente e tolerante a falhas para garantir a durabilidade e a disponibilidade dos dados.

Casos de uso do dimensionamento automático

Os casos de uso para dimensionamento automático incluem:

  • Cargas de trabalho variáveis ou imprevisíveis:quando suas cargas de trabalho têm picos variáveis ou imprevisíveis de uso, o dimensionamento automático ajuda a aumentar e reduzir verticalmente automaticamente com base no uso. Exemplos incluem sites de varejo com padrões de tráfego sazonais, cargas de trabalho de IoT com picos de uso diários e aplicativos de linha de negócios com picos ocasionais de uso. O dimensionamento automático elimina a necessidade de alocar manualmente a taxa de transferência para capacidade de pico ou média.

  • Novos aplicativos: Se você estiver desenvolvendo um novo aplicativo e não tiver certeza sobre a taxa de transferência (RU/s) necessária, o dimensionamento automático simplifica a introdução. Você pode começar com o ponto de entrada de dimensionamento automático de 100–1000 RU/s, monitorar o uso e determinar as RU/s corretas ao longo do tempo.

  • Aplicativos usados com pouca frequência: Se você tiver um aplicativo usado apenas por algumas horas várias vezes por dia, semana ou mês, como um aplicativo de baixo volume, um site ou um blog. O dimensionamento automático ajusta a capacidade para lidar com picos de uso e reduz quando ele termina.

  • Cargas de trabalho de desenvolvimento e teste: se você ou sua equipe usam bancos de dados e contêineres do Azure Cosmos DB durante as horas de trabalho, mas não precisam deles nas noites ou nos fins de semana, o dimensionamento automático ajuda a economizar custos, reduzindo ao mínimo quando não estiver em uso.

  • Cargas de trabalho/consultas de produção programada:Se você tiver uma série de solicitações, operações ou consultas agendadas que deseja executar durante períodos ociosos, poderá fazer isso facilmente com o dimensionamento automático. Quando a carga de trabalho é executada, a taxa de transferência é dimensionada automaticamente para o valor necessário e é reduzida posteriormente.

Criar uma solução personalizada para esses problemas requer um tempo significativo e adiciona complexidade à configuração ou ao código do aplicativo. O dimensionamento automático habilita os cenários acima imediatamente e elimina a necessidade de dimensionamento personalizado ou manual da capacidade.

Casos de uso de escala dinâmico

Os casos de uso do escala dinâmico incluem:

  • Cargas de trabalho de banco de dados com uma região primária altamente traficada e uma região passiva secundária para recuperação de desastre.
    • Com o dimensionamento dinâmico, obter alta disponibilidade com várias regiões é mais econômico. A região secundária é dimensionada de forma independente e automaticamente enquanto está ociosa. A região secundária também aumenta automaticamente à medida que se torna ativa e durante o tratamento do tráfego de replicação de gravação da região primária.
  • Cargas de trabalho de banco de dados de várias
    • Essas cargas de trabalho geralmente experimentam distribuição desigual de solicitações entre regiões devido ao crescimento natural do tráfego e quedas ao longo do dia. Por exemplo, um banco de dados está ativo durante o horário comercial em fusos horários distribuídos globalmente.

Como funciona a taxa de transferência de dimensionamento automático

Ao configurar contêineres e bancos de dados com dimensionamento automático, você especifica a taxa de transferência máxima Tmax necessária. O Azure Cosmos DB dimensiona a taxa de transferência T para que 0.1*Tmax <= T <= Tmax. Por exemplo, se você definir a taxa de transferência máxima como 20.000 RU/s, a taxa de transferência será escalada entre 2.000 e 20.000 RU/s. O dimensionamento é automático e instantâneo, para que você possa consumir até o provisionado Tmax a qualquer momento sem demora.

Você é cobrado por cada hora pela maior taxa de transferência T para a qual o sistema é dimensionado durante essa hora. Quando o dimensionamento dinâmico é habilitado, o dimensionamento é baseado no uso de RU/s em cada partição física e região. Como cada partição e região são dimensionadas de forma independente, essa cobrança pode levar a uma economia de custos para cargas de trabalho nãoformes, uma vez que escalas desnecessárias são evitadas.

O ponto de entrada para a taxa Tmax de transferência máxima de dimensionamento automático é 1000 RU/s, dimensionando entre 100 e 1000 RU/s. Você pode definir Tmax em incrementos de 1.000 RU/s e alterar o valor a qualquer momento.

Por exemplo, se uma coleção tiver 1000 RU/s e 2 partições, cada partição poderá escalar verticalmente até 500 RU/s. Para uma hora de atividade, a utilização seria semelhante a esta:

Região Partição Taxa de transferência Utilização Observações
Gravar P1 <= 500 RU/s 100% 500 RU/s que consistem em 50 RU/s usadas para operações de gravação e 450 RU/s para operações de leitura.
Gravar P2 <= 200 RU/s 40% 200 RU/s que consistem em todas as operações de leitura.
Ler P1 <= 150 RU/s 30% 150 RU/s que consistem em 50 RU/s usadas para gravações replicadas da região de gravação. 100 RU/s são usados para operações de leitura nesta região.
Ler P2 <= 50 RU/s 10%

Sem dimensionamento dinâmico, o sistema dimensiona todas as partições uniformemente com base na partição mais quente. Nesse exemplo, como a partição mais ativa teve 100% de utilização, todas as partições nas regiões de leitura e gravação são dimensionadas para 1000 RU/s, fazendo com que o total de RU/s seja dimensionado para 2000 RU/s.

Com o dimensionamento dinâmico, a taxa de transferência de cada partição e região é dimensionada de forma independente, resultando em um total de 900 RU/s, o que reflete melhor o padrão de tráfego real e reduz os custos.

Habilitando o dimensionamento automático em recursos existentes

Use o portal do Microsoft Azure, CLI ou PowerShell do Azure para habilitar o dimensionamento automático em um banco de dados ou contêiner existente. Alterne entre o dimensionamento automático e a taxa de transferência provisionada padrão (manual) a qualquer momento. Para obter mais informações, confira esta documentação.

Limites de taxa de transferência e armazenamento para dimensionamento automático

Para qualquer valor de Tmax, o banco de dados ou contêiner armazena um total de 0.1 * Tmax GB. Depois de atingir esse valor de armazenamento, o máximo de RU/s aumenta automaticamente com base no novo valor de armazenamento sem afetar seu aplicativo.

Por exemplo, se você começar com o máximo de 50.000 RU/s (o que é dimensionado entre 5000 e 50.000 RU/s), pode armazenar até 5,000 GB de dados. Se o armazenamento exceder 5.000 GB, como atingir 6.000 GB, o novo máximo de RU/s se tornará 60.000 RU/s (escala entre 6.000 e 60.000 RU/s).

Ao usar a taxa de transferência no nível do banco de dados com dimensionamento automático, você pode fazer com que os 25 primeiros contêineres compartilhem um máximo de RU/s de 1000 (o que é dimensionado entre 100 e 1000 RU/s), desde que você não exceda 100 GB de armazenamento. Para obter mais informações, confira esta documentação.

Habilitando o escala dinâmico

O dimensionamento dinâmico é habilitado por padrão para todas as contas do Azure Cosmos DB criadas após 25 de setembro de 2024. Os clientes que desejam habilitar esse recurso para suas contas mais antigas podem fazer isso programaticamente por meio do Azure PowerShell, da CLI, da API REST ou do painel de recursos do portal do Azure, conforme mostrado:

  1. Acesse sua conta do Azure Cosmos DB no portal do Azure.

  2. Selecione a página Recursos.

  3. Localize e habilite o recurso dimensionamento dinâmico (por região e por dimensionamento automático de partição).

    Captura de tela do recurso **Dimensionamento dinâmico (por região e por dimensionamento automático de partição)** no portal do Azure.

    Importante

    O recurso está habilitado no nível da conta, portanto, todos os contêineres de dimensionamento automático e dimensionamento automático de bancos de dados de taxa de transferência compartilhada dentro da conta têm essa funcionalidade aplicada automaticamente. Habilitar esse recurso não afeta os recursos na conta que estão usando a taxa de transferência manual. Os recursos manuais precisam ser alterados para dimensionamento automático para aproveitar o dimensionamento dinâmico. Habilitar esse recurso não tem nenhum efeito de tempo de inatividade ou desempenho. Esse recurso não é aplicável para contas sem servidor. Esse recurso tem suporte em todas as nuvens.

Monitorando métricas

Você pode usar as seguintes métricas para monitorar o escala automático e dinâmico:

Nome da métrica Definição Uso da métrica
Taxa de transferência provisionada Mostra as RU/s mais altas agregadas dimensionadas ao longo da hora e representa o total de RU/s dimensionados para a hora. Você pode usar a métrica Provisioned Throughput para ver as RU/s cobradas em cada hora. Com o dimensionamento automático, você é cobrado com base na partição mais ativa para cada hora e o mesmo se aplica a todas as partições e regiões. Com o dimensionamento automático dinâmico, você é cobrado pelas RU/s mais altas agregadas dimensionadas em cada hora em cada nível de partição e região.
Consumo de RU normalizado Essa métrica representa a taxa de RU/s consumidas para RU/s provisionadas em cada nível de partição e região. Use essa métrica para determinar se a taxa de transferência máxima de dimensionamento automático está abaixo ou superprovisionada.

Se o valor da métrica for consistentemente 100%, e seu aplicativo vir limitando a taxa (código de erro 429), talvez você precise de mais RU/s. Por outro lado, se esse valor de métrica for baixo e não houver limitação de taxa, talvez haja espaço para otimizar e reduzir horizontalmente as RU/s. Saiba mais sobre como interpretar e depurar erros de limitação de taxa com o código 429.

A métrica Normalized RU Consumption reflete as RU/s consumidas na região secundária devido ao tráfego de replicação de gravação da primária, além de qualquer tráfego de leitura na secundária.
RU dimensionada automaticamente Mostra a taxa de transferência provisionada dimensionada dinamicamente em cada nível de partição e região apenas para contas habilitadas para dimensionamento automático dinâmico. Use essa métrica para ver como as partições em cada região são dimensionadas independentemente com base em seu uso.

Use as métricas do Azure Monitor - Autoscaled RU para analisar como o novo dimensionamento automático se aplica entre partições e regiões. Filtre para a conta de banco de dados e o contêiner desejados e, em seguida, filtre ou divida pela métrica PartitionID física. Essa métrica mostra todas as partições em suas várias regiões.

Importante

É recomendável usar a funcionalidade de dimensionamento dinâmico nativo do Azure Cosmos DB para gerenciar sua capacidade. No entanto, se necessário, a métrica de consumo de RU normalizada no Azure Monitor pode ser usada para tomar decisões de dimensionamento programáticas. Outras abordagens, como usar a chamada ReadThroughputAsync() nos SDKs (kits de desenvolvimento de software) do Azure Cosmos DB para obter o valor ProvisionedThroughput ou usar a métrica ProvisionedThroughput no Azure Monitor, não são recomendadas e levam a resultados imprecisos. Essas métricas representam a taxa de transferência cobrada com um atraso e não devem ser usadas para decisões de dimensionamento.

Comparação – Contêineres configurados com taxa de transferência manual vs dimensionamento automático

Para obter mais informações, consulte esta documentação sobre como escolher entre a taxa de transferência padrão (manual) e de dimensionamento automático.

Contêineres com taxa de transferência padrão (manual) Contêineres com taxa de transferência de dimensionamento automático
Taxa de transferência provisionada (RU/s) Provisionado manualmente. Dimensionado de forma automática e instantânea com base nos padrões de uso da carga de trabalho.
Limitação de taxa de solicitações/operações (429) Pode acontecer se o consumo exceder a capacidade provisionada. Não acontecerá se você consumir RU/s dentro do intervalo de taxa de transferência de dimensionamento automático configurado.
Planejamento da capacidade Você precisa planejar a capacidade e definir a taxa de transferência exata necessária. O sistema lida automaticamente com o planejamento e o gerenciamento de capacidade.
Preços Você paga pelas RU/s provisionadas manualmente por hora, usando a taxa de RU/s padrão (manual) por hora. Você paga por hora pela RU/s mais alta que o sistema dimensionou dentro de uma hora.

Para contas de região de gravação única, você paga pela RU/s usada por hora, usando a taxa de RU/s de dimensionamento automático por hora.

No caso de contas com várias regiões de gravação, não há custo adicional para o dimensionamento automático. Você paga pela taxa de transferência usada por hora, usando a mesma taxa de RU/s de gravação multirregião por hora.

Mais adequado para tipos de carga de trabalho Cargas de trabalho previsíveis e estáveis Cargas de trabalho variáveis imprevisíveis

Migrar a taxa de transferência provisionada padrão para o dimensionamento automático

Os usuários que desejam migrar muitos recursos da taxa de transferência provisionada padrão para o dimensionamento automático podem usar um script da CLI do Azure para migrar todos os recursos de taxa de transferência em uma assinatura do Azure para dimensionamento automático.