Présentation de la technologie
Azure Cosmos DB est une base de données NoSQL et multimodèle entièrement managée par Microsoft Azure. Elle est conçue pour des applications modernes nécessitant des performances élevées, une faible latence (de l’ordre de la milliseconde) et une évolutivité mondiale. Azure Cosmos DB prend en charge plusieurs modèles de données (clé-valeur, document, graphe, table) et offre des API compatibles avec MongoDB, Cassandra, Gremlin, PostgreSQL et Table.
Principaux avantages :
- Évolutivité mondiale : Réplication des données dans plusieurs régions Azure avec haute disponibilité (SLA de 99,999 %).
- Performances garanties : Temps de réponse en millisecondes avec un débit provisionné mesuré en RU/s (Request Units per second).
- Flexibilité : Indexation automatique sans schéma et support pour différents modèles de données.
- Sécurité renforcée : Chiffrement des données au repos et en transit, contrôle d’accès basé sur les rôles (RBAC).
- Intégration native : Compatible avec d’autres services Azure comme Functions, Synapse Analytics ou IoT Hub.
Cas d’utilisation :
- Applications web et mobiles nécessitant une faible latence.
- Gestion de contenu généré par les utilisateurs.
- Architectures pilotées par événements grâce au flux de modification.
- Analyse en temps réel pour l’IoT ou le commerce électronique.
—
Mise en place technique
Étape 1 : Créer un compte Azure Cosmos DB
Via le portail Azure :
- Connectez-vous au portail Azure.
- Recherchez « Azure Cosmos DB » dans la barre de recherche.
- Cliquez sur « Créer ».
- Configurez les paramètres suivants :
- API : Sélectionnez l’API adaptée à votre modèle de données (ex. NoSQL, MongoDB).
- Nom du compte : Fournissez un nom unique globalement.
- Groupe de ressources : Choisissez un groupe existant ou créez-en un nouveau.
- Région primaire : Sélectionnez une région proche de vos utilisateurs.
- Cliquez sur « Vérifier + créer », puis sur « Créer ».
Via Azure CLI :
bash
az cosmosdb create \
–name my-cosmosdb-account \
–resource-group my-resource-group \
–kind GlobalDocumentDB \
–locations regionName=eastus failoverPriority=0 isZoneRedundant=false
—
Étape 2 : Créer une base de données et un conteneur
Via le portail Azure :
- Accédez à votre compte Cosmos DB créé.
- Sous « Explorateur de données », cliquez sur « Nouvelle base de données ».
- Fournissez un nom pour la base de données (ex. MyDatabase) et configurez le débit (manuel ou partagé).
- Ajoutez un conteneur :
– Nom du conteneur (ex. MyContainer).
– Clé de partition (ex. /id pour optimiser les performances).
Via Azure CLI :
bash
az cosmosdb sql database create \
–account-name my-cosmosdb-account \
–resource-group my-resource-group \
–name MyDatabase
az cosmosdb sql container create \
–account-name my-cosmosdb-account \
–resource-group my-resource-group \
–database-name MyDatabase \
–name MyContainer \
–partition-key-path « /id » \
–throughput 400
—
Étape 3 : Insérer et interroger des données
Utilisation du portail Azure :
- Accédez à l' »Explorateur de données ».
- Sélectionnez votre conteneur et cliquez sur « Nouvel élément ».
- Ajoutez un document JSON (par exemple) :
json
{
« id »: « 1 »,
« name »: « John Doe »,
« email »: « john.doe@example.com »
}
- Cliquez sur « Enregistrer ».
Utilisation du SDK .NET :
csharp
var client = new CosmosClient(« <connection-string> »);
var container = client.GetContainer(« MyDatabase », « MyContainer »);
// Insérer un document
var item = new { id = « 1 », name = « John Doe », email = « john.doe@example.com » };
await container.CreateItemAsync(item, new PartitionKey(item.id));
// Interroger les documents
var query = container.GetItemQueryIterator<dynamic>(« SELECT FROM c WHERE c.name = ‘John Doe' »);
while (query.HasMoreResults)
{
foreach (var result in await query.ReadNextAsync())
{
Console.WriteLine(result);
}
}
—
Exploitation technique courante
Surveillance des performances
- Accédez à votre compte Cosmos DB dans le portail Azure.
- Sous « Métriques », suivez les indicateurs clés comme :
- Débit consommé (RU/s).
- Latence des requêtes.
- Taux d’erreur.
Gestion du débit provisionné
- Ajustez manuellement le débit via le portail ou utilisez la mise à l’échelle automatique pour optimiser les coûts.
bash
az cosmosdb sql container throughput update \
–account-name my-cosmosdb-account \
–resource-group my-resource-group \
–database-name MyDatabase \
–name MyContainer \
–throughput 1000
Sécurisation des accès
- Activez le contrôle d’accès basé sur les rôles (RBAC) via Azure Active Directory.
- Configurez des clés d’accès ou utilisez des jetons SAS pour limiter l’accès.
Flux de modification
Utilisez le flux de modification pour capturer les modifications apportées aux documents en temps réel :
csharp
ChangeFeedProcessor processor = container.GetChangeFeedProcessorBuilder(« processor », async changes =>
{
foreach (var change in changes)
{
Console.WriteLine($ »Document modifié : {change} »);
}
})
.WithInstanceName(« instance »)
.WithLeaseContainer(leaseContainer)
.Build();
await processor.StartAsync();
—
Bonnes pratiques
- Optimisation des performances :
- – Utilisez une clé de partition efficace pour équilibrer la charge entre les partitions.
- – Exploitez les index automatiques pour accélérer les requêtes.
- Sécurité renforcée :
- Activez le chiffrement avec vos propres clés via Azure Key Vault.
- Limitez l’accès réseau avec des règles IP ou des points de terminaison privés.
- Surveillance proactive :
- Configurez des alertes via Azure Monitor pour détecter les anomalies.
- Gestion des coûts :
- Utilisez le mode sans serveur pour les charges ponctuelles ou peu fréquentes.
- Analysez régulièrement l’utilisation du débit pour ajuster vos besoins.
- Tests réguliers :
- Testez vos applications avec différentes charges pour identifier les goulots d’étranglement.
En suivant ces étapes et bonnes pratiques, vous serez capable d’exploiter pleinement Azure Cosmos DB pour développer des applications modernes, hautement performantes et évolutives tout en maîtrisant leur gestion et leur sécurité dans le cloud Azure.