cline/cosmosdb-best-practices

Compétence d'agent fournissant les meilleures pratiques pour Azure Cosmos DB, incluant la modélisation des données, l'optimisation des requêtes et la configuration de l'indexation.

Qu'est-ce que cosmosdb-best-practices ?

Cette compétence d'agent, issue de la collection cline/skills, offre aux développeurs et aux utilisateurs d'agents IA un guide complet des meilleures pratiques pour Azure Cosmos DB. Elle couvre des aspects essentiels tels que la modélisation des données (notamment l'utilisation de partitions logiques et de clés de partition appropriées), l'optimisation des requêtes (avec des recommandations sur l'utilisation de requêtes de point, d'index composés et de la fonctionnalité de changement de flux), et la configuration de l'indexation (stratégies d'indexation inclusive et exclusive, et politiques TTL). La compétence est conçue pour être utilisée avec des agents comme Claude Code, Cursor ou Codex, afin de garantir que les applications interagissant avec Cosmos DB suivent les directives établies par Microsoft, améliorant ainsi les performances, la scalabilité et la gestion des coûts. Elle fournit des extraits de code, des exemples de configuration et des explications détaillées pour guider l'implémentation correcte.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cline/skills/tree/main/skills/cosmosdb-best-practices

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait cosmosdb-best-practices ?

Compétence d'agent 'cosmosdb-best-practices' de cline/skills.

Vue d'ensemble

Azure Cosmos DB est une base de données NoSQL distribuée globalement. Cette compétence résume les meilleures pratiques pour l'utiliser efficacement avec les SDK et API pris en charge.

Modélisation des données

  • Clés de partition : Choisissez une clé de partition avec une cardinalité élevée (par exemple, /userId, /deviceId) pour répartir uniformément la charge entre les partitions physiques.
  • Partitions logiques : Chaque partition logique ne doit pas dépasser 20 Go de stockage. Assurez-vous qu'aucune partition unique ne reçoive plus de 10 000 unités de requête par seconde (RU/s).
  • Dénormalisation : Dans Cosmos DB (API NoSQL), privilégiez la dénormalisation des données (lire et écrire dans le même conteneur) plutôt que les jointures.
# Exemple : Dénormalisation d'un utilisateur et de ses commandes
{
  "id": "user123",
  "partitionKey": "user123",
  "type": "user",
  "name": "Jean Dupont",
  "orders": [
    {"orderId": "ord001", "total": 100.0, "status": "livré"}
  ]
}

Optimisation des requêtes

  • Requêtes de point : Utilisez des requêtes de point (ReadItemAsync) avec la clé de partition et l'ID pour une latence de lecture en millisecondes à un chiffre.
  • Index composés : Créez des index composés pour les clauses ORDER BY sur plusieurs propriétés ou les filtres avec plusieurs conditions.
  • Flux de changement : Utilisez le flux de changement pour propager les mises à jour en temps réel à d'autres services (par exemple, Azure Functions, Azure Synapse Link).
// Requête de point efficace
ItemResponse<User> response = await container.ReadItemAsync<User>(
    partitionKey: new PartitionKey("user123"),
    id: "user123"
);

Configuration de l'indexation

  • Indexation inclusive : Indexez uniquement les propriétés utilisées dans les requêtes. Par défaut, toutes les propriétés sont indexées - désactivez l'indexation pour les propriétés inutilisées.
  • Indexation exclusive : Pour les modèles de données de type journal ou éphémères, définissez la politique d'indexation sur None et ajoutez uniquement les chemins d'index nécessaires.
  • TTL (Time to Live) : Utilisez la fonction TTL sur les conteneurs ou les éléments pour nettoyer automatiquement les données obsolètes et réduire le coût de stockage.
{
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {"path": "/*"}
  ],
  "excludedPaths": [
    {"path": "/\"_etag\"/?"},
    {"path": "/internalMetadata/*"}
  ]
}

Gestion des coûts

  • Unités de requête (RU) : Surveillez la consommation de RU via les métriques Azure Monitor. Redimensionnez le débit provisionné (RU/s manuelles ou mises à l'échelle automatique) en fonction des modèles de charge.
  • SDK v3 : Utilisez la dernière version du SDK .NET (v3) ou du SDK Java (v4) pour bénéficier des optimisations et des correctifs les plus récents.

Ressources supplémentaires


Cette compétence fait partie de la collection cline/skills.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Skills associés