Partager via


Mise à l'échelle automatique du débit dans Cosmos DB sur Microsoft Fabric

Cosmos DB dans Microsoft Fabric prend en charge le débit provisionné à l’échelle automatique. Le débit provisionné à l'autoscalabilité convient parfaitement aux charges de travail essentielles qui ont des modèles de trafic variables ou imprévisibles. La mise à l’échelle automatique dans Cosmos DB dans Microsoft Fabric met à l’échelle les charges de travail en fonction de la partition la plus active. Pour les charges de travail nonuniformes qui ont différents modèles de charge de travail, cette mise à l’échelle peut entraîner des scale-ups inutiles. La mise à l’échelle automatique dynamique est une amélioration de la mise à l’échelle automatique provisionnée qui permet de gérer les charges de travail non-uniformes de manière indépendante en fonction de l’utilisation, à un niveau par partition. La mise à l’échelle dynamique vous permet d’économiser des coûts si vous rencontrez souvent des partitions chaudes.

Avantages

Les conteneurs Cosmos DB dans Microsoft Fabric configurés avec un débit provisionné en ajustement automatique offrent les avantages suivants :

  • Simple: La mise à l’échelle automatique supprime la complexité de la gestion du débit ou de la capacité de mise à l’échelle manuelle.

  • Évolutif : Les conteneurs font automatiquement évoluer le débit provisionné selon les besoins. Il n’y a aucune interruption des applications clientes.

  • Instantané : Les conteneurs augmentent leur capacité instantanément en cas de besoin. Il n’y a pas de période de préchauffement lorsque le débit supplémentaire est nécessaire pour des augmentations soudaines.

  • Économique : la mise à l’échelle automatique permet d’optimiser l’utilisation et le coût de l’utilisation des RU/s en effectuant un scale-down en l’absence d’utilisation. Vous payez uniquement les ressources dont vos charges de travail ont besoin sur une base horaire.

  • Hautement disponible : Les conteneurs utilisant la mise à l’échelle automatique utilisent le même back-end Azure Cosmos DB à tolérance de panne et hautement disponible pour garantir la durabilité et la haute disponibilité des données.

Cas d’utilisation

La mise à l’échelle automatique dans Cosmos DB peut être bénéfique pour différentes charges de travail, en particulier des charges de travail variables ou imprévisibles. Lorsque vos charges de travail présentent des pics d’utilisation variables ou imprévisibles, la mise à l’échelle automatique permet d’ajuster automatiquement la capacité à la hausse et à la baisse en fonction de l’utilisation. Voici quelques exemples :

  • Rapports ou notebooks Power BI exécutés par les utilisateurs avec des habitudes d'utilisation imprévisibles.
  • Charges de travail de développement et de test utilisées principalement pendant les heures de travail.
  • Travaux Spark planifiés avec des opérations ou des requêtes que vous souhaitez exécuter lors des périodes d’inactivité.
  • Applications métier qui voient l’utilisation maximale quelques fois par mois ou par an, et bien plus encore.

La création d’une solution personnalisée pour ces problèmes nécessite non seulement un temps considérable, mais également une complexité dans la configuration ou le code de votre application. La mise à l’échelle automatique met en œuvre les scénarios prêts à l’emploi ci-dessus et élimine la nécessité d’une mise à l’échelle personnalisée ou manuelle de la capacité.

Configurer le débit de mise à l'échelle automatique de Cosmos DB avec Microsoft Fabric

Les conteneurs créés dans Cosmos DB dans Fabric sont automatiquement approvisionnés avec un débit de mise à l’échelle automatique de 5 000 RU/s lors de la création dans le portail Fabric. Le débit de mise à l’échelle automatique peut être lu et mis à jour à l’aide du Kit de développement logiciel (SDK) Cosmos DB. Le débit de mise à l’échelle automatique minimal peut être défini sur 1 000 RU/s avec un maximum de 5 000 RU/s. Ce maximum peut être augmenté par le biais d’un ticket de support.

Configurer la mise à l’échelle automatique à l’aide du Kit de développement logiciel (SDK) Azure

Utilisez le Kit de développement logiciel (SDK) Cosmos DB pour définir le débit de lecture et de mise à l’échelle automatique sur un conteneur dans Cosmos DB dans Microsoft Fabric.

Pour obtenir un exemple complet de définition du débit Cosmos DB dans un notebook Fabric, consultez Les opérations de gestion pour Cosmos DB dans 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}");