Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Cosmos DB no Microsoft Fabric suporta escalabilidade automática de capacidade provisionada. A taxa de transferência provisionada de dimensionamento automático é adequada para cargas de trabalho de missão crítica com padrões de tráfego variáveis ou imprevisíveis. A autoescala no Cosmos DB no Microsoft Fabric escala as cargas de trabalho com base na partição mais ativa. Para cargas de trabalho não uniformes com padrões de carga de trabalho diferentes, esse dimensionamento pode causar escalonamentos desnecessários. O dimensionamento automático dinâmico é um aprimoramento do dimensionamento automático provisionado que ajuda a dimensionar essas cargas de trabalho não uniformes de forma independente com base no uso, em um nível por partição. O dimensionamento dinâmico permite que você economize custos se você costuma experimentar partições quentes.
Benefícios
Os contentores do Cosmos DB no Microsoft Fabric configurados com débito provisionado com dimensionamento automático têm os seguintes benefícios:
Simples: O dimensionamento automático elimina a complexidade do gerenciamento da taxa de transferência ou do dimensionamento manual da capacidade.
Escalável: Os contêineres dimensionam automaticamente a taxa de transferência provisionada conforme necessário. Não há qualquer perturbação nas aplicações do cliente.
Instantâneo: Os contêineres são dimensionados instantaneamente quando necessário. Não existe período de aquecimento em que seja necessário um débito adicional para aumentos súbitos.
Custo-benefício: o dimensionamento automático ajuda a otimizar o consumo de RU/s e os custos, ajustando os recursos para baixo quando não estão em uso. Você paga apenas pelos recursos de que suas cargas de trabalho precisam por hora.
Altamente disponíveis: Os containers que usam autoscale utilizam o mesmo backend Azure Cosmos DB, tolerante a falhas e altamente disponível, para garantir durabilidade dos dados e 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 as suas cargas de trabalho têm picos variáveis ou imprevisíveis na utilização, o dimensionamento automático ajuda a aumentar e diminuir automaticamente com base na utilização. Os exemplos incluem:
- Relatórios ou blocos de notas do Power BI executados por utilizadores com padrões de utilização 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 registram pico de uso algumas vezes por mês ou ano e muito mais.
A criação de uma solução personalizada para esses problemas não só requer uma enorme quantidade de tempo, mas também introduz complexidade na configuração ou no código do seu aplicativo. O dimensionamento automático permite os cenários acima prontos e elimina a necessidade de dimensionamento personalizado ou manual da capacidade.
Configurar o débito de autoescala no Cosmos DB no Microsoft Fabric
Os contentores criados no Cosmos DB no Fabric são automaticamente provisionados com uma largura de banda autoescalável de 5000 RU/s no portal do Fabric quando criados. O débito de autoescala pode ser lido e atualizado através do Cosmos DB SDK. O débito mínimo de autoescala pode ser definido para 1000 RU/s com um máximo de 50000 RU/s. Este máximo pode ser aumentado através de um ticket de suporte.
Configurar autoescalabilidade usando o Azure SDK
Use o SDK do Cosmos DB para definir e atualizar a taxa de transferência de escalabilidade automática num contentor no Cosmos DB no Microsoft Fabric.
Para um exemplo completo para definir a capacidade de processamento do Cosmos DB num caderno Fabric, veja Operações de Gestão 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}");