Compartilhar via


Escalonamento automático de capacidade de processamento no Cosmos DB no Microsoft Fabric

O Cosmos DB no Microsoft Fabric oferece suporte ao escalonamento automático de taxa de transferência provisionada. A taxa de transferência dimensionada automaticamente é adequada para cargas de trabalho de missão crítica que têm padrões de tráfego variáveis ou imprevisíveis. O dimensionamento automático no Cosmos DB no Microsoft Fabric dimensiona cargas de trabalho com base na partição mais ativa. Para cargas de trabalho nãouniformes que têm diferentes padrões de carga de trabalho, esse dimensionamento pode causar escalas desnecessárias. A escala automática dinâmica é um aprimoramento do provisionamento de escala automática de forma abrangente que ajuda a dimensionar essas cargas de trabalho não uniformes de forma independente, com base no uso, em nível de partição. O dimensionamento dinâmico permite economizar custo se você geralmente experimenta partições quentes.

Benefícios

Contêineres do Cosmos DB no Microsoft Fabric configurados com taxa de transferência provisionada para ajuste automático têm os seguintes benefícios:

  • Simples: O dimensionamento automático remove a complexidade de gerenciar a taxa de transferência ou dimensionar manualmente a capacidade.

  • Escalonável: Os contêineres dimensionam automaticamente a taxa de transferência provisionada conforme necessário. Não há interrupção nos aplicativos cliente.

  • Instantâneo: Os contêineres aumentam de escala instantaneamente quando necessário(s). Não há um período de aquecimento em que a taxa de transferência adicional seja necessária para aumentos repentinos.

  • Econômico: o dimensionamento automático ajuda a otimizar o uso de RU/s e de custos ao reduzir verticalmente quando não estiver em uso. Você paga apenas pelos recursos que suas cargas de trabalho precisam por hora.

  • Altamente disponível: Os contêineres que usam o dimensionamento automático usam o mesmo back-end do Azure Cosmos DB tolerante a falhas e altamente disponível para garantir a durabilidade dos dados e a alta disponibilidade.

Casos de uso

O dimensionamento automático no Cosmos DB pode ser benéfico em várias cargas de trabalho, especialmente 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 aumentando e reduzindo automaticamente com base no uso. Os exemplos incluem:

  • Relatórios ou notebooks do Power BI executados por usuários com padrões de uso imprevisíveis.
  • Cargas de trabalho de desenvolvimento e teste usadas principalmente durante o horário de trabalho.
  • Trabalhos agendados do Spark com operações ou consultas que você deseja executar durante períodos ociosos.
  • Aplicativos de linha de negócios que atingem o pico de uso algumas vezes por mês ou ano, entre outros cenários.

A criação de uma solução personalizada para esses problemas não só requer uma enorme quantidade de tempo, mas também apresenta complexidade na configuração ou no código do seu aplicativo. O dimensionamento automático habilita os cenários acima imediatamente e elimina a necessidade de dimensionamento personalizado ou manual da capacidade.

Configuração de dimensionamento automático de throughput no Cosmos DB no Microsoft Fabric

Os contêineres criados no Cosmos DB no Fabric são provisionados automaticamente com capacidade de dimensionamento automático de 5.000 RU/s quando criados no Fabric portal. A capacidade de dimensionamento automático pode ser lida e atualizada usando o SDK do Cosmos DB. A taxa de transferência mínima de dimensionamento automático pode ser definida como 1000 RU/s com um máximo de 50000 RU/s. Esse máximo pode ser aumentado por meio do tíquete de suporte.

Configurar o dimensionamento automático usando o SDK do Azure

Use o SDK do Cosmos DB para definir a leitura e a atualização da taxa de transferência com escalonamento automático em um contêiner no Cosmos DB no Microsoft Fabric.

Para obter um exemplo completo para definir a taxa de transferência do Cosmos DB em um notebook do Fabric, consulte operações de gerenciamento para Cosmos DB no Fabric

database = client.get_database_client("<database-name>")
container = database.get_container_client("<container-name>")

# Get the current throughput on the container and increase it by 1000 RU/s
throughput_properties = await container.get_throughput()
autoscale_throughput = throughput_properties.auto_scale_max_throughput

print(print(f"Autoscale throughput: {autoscale_throughput}"))

new_throughput = autoscale_throughput + 1000

await container.replace_throughput(ThroughputProperties(auto_scale_max_throughput=new_throughput))

# Verify the updated throughput
updated_throughput_properties = await container.get_throughput()
print(f"Verified updated autoscale throughput: {updated_throughput_properties.auto_scale_max_throughput}")
const database = client.database('<database-name>');
const container = database.container('<container-name>');

// Get the current throughput on the container and increase it by 1000 RU/s
const { resource: throughputProperties } = await container.offer.read();
const autoscaleThroughput = throughputProperties?.autoscaleSettings?.maxThroughput;

console.log(`Autoscale throughput: ${autoscaleThroughput}`);

const newThroughput = autoscaleThroughput + 1000;

await container.offer.replace({
    offerThroughput: undefined,
    autoscaleSettings: {
        maxThroughput: newThroughput
    }
});

// Verify the updated throughput
const { resource: updatedThroughputProperties } = await container.offer.read();
console.log(`Verified updated autoscale throughput: ${updatedThroughputProperties?.autoscaleSettings?.maxThroughput}`);
Container container = client
    .GetDatabase("<database-name>")
    .GetContainer("<container-name>");

// Get the current throughput on the container and increase it by 1000 RU/s
ThroughputResponse throughputResponse = await container.ReadThroughputAsync();
int? autoscaleThroughput = throughputResponse.Resource.AutoscaleMaxThroughput;

Console.WriteLine($"Autoscale throughput: {autoscaleThroughput}");

int newThroughput = autoscaleThroughput.Value + 1000;

await container.ReplaceThroughputAsync(ThroughputProperties.CreateAutoscaleThroughput(newThroughput));

// Verify the updated throughput
ThroughputResponse updatedThroughputResponse = await container.ReadThroughputAsync();
Console.WriteLine($"Verified updated autoscale throughput: {updatedThroughputResponse.Resource.AutoscaleMaxThroughput}");