Introduction
Azure Cosmos DB est la base de données NoSQL multi-modèles de Microsoft Azure, conçue pour des applications à haute scalabilité et faible latence mondiale. Lancée en 2017, elle s'est imposée en 2026 comme la référence pour les apps distribuées, supportant des milliards de requêtes par jour chez des géants comme Coca-Cola ou Verizon.
Pourquoi l'adopter ? Contrairement aux bases relationnelles traditionnelles comme SQL Server, Cosmos DB excelle dans les scénarios Big Data, IoT et e-commerce où les données sont hétérogènes et les pics de trafic imprévisibles. Elle offre une distribution globale transparente (multi-régions actives), des SLA de 99,999 % de disponibilité et une facturation au consommé via les Request Units (RU/s).
Ce tutoriel débutant, 100 % conceptuel, vous guide des bases théoriques aux bonnes pratiques avancées. À la fin, vous saurez modéliser vos données, choisir les bons paramètres et éviter les pièges coûteux. Pas de code : focus sur la théorie actionnable pour bookmarker et réviser.
Prérequis
- Un compte Azure gratuit (crédit de 200 € pour tester).
- Connaissances de base en bases de données (relationnelles ou NoSQL).
- Compréhension des concepts JSON et schémas flexibles.
- Accès au portail Azure (portal.azure.com).
Qu'est-ce qu'Azure Cosmos DB ? Les fondations
Azure Cosmos DB est une base de données distribuée globalement, serverless par défaut en 2026, qui abstrait la complexité de la réplication et du partitionnement.
Analogie : Imaginez un supermarché géant avec des rayons dupliqués dans chaque ville. Cosmos DB est ce supermarché : vos données sont répliquées automatiquement dans plusieurs régions Azure, avec lecture/écriture forte ou éventuelle selon vos besoins.
Caractéristiques clés :
- Multi-modèles : SQL (Core), MongoDB, Cassandra, Gremlin (graph), Table (Azure Table).
- Scalabilité horizontale : Ajoutez des RU/s ou des conteneurs sans downtime.
- Indexation automatique : Tout est indexé par défaut, mais personnalisable.
Exemple concret : Une app e-commerce stocke produits (JSON), utilisateurs (MongoDB) et relations graph (recommandations) dans un seul compte Cosmos DB.
Les modèles de données supportés
Cosmos DB brille par sa polyvalence : choisissez l'API au niveau du compte.
| Modèle | Usage idéal | Exemple |
|---|---|---|
| -------- | ------------- | --------- |
| SQL (Core) | Documents JSON flexibles | Catalogues produits, logs IoT |
| MongoDB | Apps existantes Mongo | CMS, apps mobiles |
| Cassandra | Workloads tabulaires hautes écritures | Time-series, capteurs |
| Gremlin | Graphes complexes | Réseaux sociaux, fraudes |
| Table | Données clé-valeur simples | Configs, sessions |
SELECT * FROM c WHERE c.age > 30. Évitez de mixer APIs dans un compte pour simplifier la gestion.Concepts clés : Conteneurs, partitions et RU/s
Hiérarchie des objets :
- Compte : Point d'entrée global (régions, clés API).
- Base de données : Logique (groupes de conteneurs).
- Conteneur : Unité de stockage scalable (équivaut à une table).
Partitionnement logique : Clé de partition (ex:
/userId) distribue les données sur des partitions physiques. Règle d'or : Choisissez une clé à cardinalité élevée (millions de valeurs uniques) pour scaler.
Request Units (RU/s) : Unité de throughput. 1 RU/s ≈ 1 lecture de 1 Ko. Provisionnez autoscale pour les pics (10-100x auto).
Exemple : Dans un conteneur 'Orders', clé /customerId : toutes les commandes d'un client vont dans la même partition physique → Requêtes rapides par client.
Scalabilité globale et cohérence
Cosmos DB excelle en multi-région : Activez 2+ régions pour zéro latence (<10 ms).
Modèles de cohérence (5 niveaux) :
- Strong : Lecture voit toutes les écritures (rare, coûteux).
- Bounded Staleness : Limite la fraîcheur (idéal e-commerce).
- Session : Cohérent par session utilisateur (défaut apps web).
- Consistent Prefix : Ordre des écritures préservé.
- Eventual : Éventuel (chat apps).
Analogie : Comme un orchestre mondial : 'Session' garde le rythme par musicien, 'Strong' synchronise tout.
Étude de cas : Netflix utilise Cosmos DB pour 1 milliard+ de profils utilisateurs, avec réplication EU/US en <150 ms.
Bonnes pratiques essentielles
- Modélisez pour la requête : Dénormalisez les données (dupliquez pour éviter les JOINs coûteux). Ex: Intégrez 'user details' dans chaque 'order'.
- Choisissez la clé de partition idéale : Haute cardinalité + hotspots évités (pas
/statussi 90 % = 'active'). - Utilisez autoscale RU/s : Économisez 60-80 % vs provisionné fixe pour workloads variables.
- Activez Free Tier : 1000 RU/s + 25 Go gratuits par compte pour prototyper.
- Surveillez via Metrics : Portail Azure → Graphiques RU consommés, latence, throttles.
Erreurs courantes à éviter
- Mauvaise clé de partition : Cause hotspots → 429 Throttled. Solution: Testez avec Query Metrics.
- Oublier l'indexation : Par défaut tout indexé → Coûts RU élevés. Créez un indexing policy excluant champs inutiles.
- Provisionnement sous-optimal : Trop bas → Throttles ; trop haut → Gaspillage. Utilisez Capacity Calculator Azure.
- Ignorer la cohérence : Session par défaut OK, mais validez pour apps critiques (banque → Strong).
Pour aller plus loin
Maîtrisez Cosmos DB en pratiquant :
- Documentation officielle Azure Cosmos DB.
- Capacity Planner.
- Études de cas : Adopté par ASOS pour 10x scale.
Découvrez nos formations Learni sur Azure : Formations complètes avec labs pratiques sur Cosmos DB, incluant code réel et certification DP-420.