Révision d’Azure Well-Architected Framework – Azure Cosmos DB pour NoSQL
Cet article décrit les meilleures pratiques pour Azure Cosmos DB pour NoSQL. Ces bonnes pratiques garantissent que vous pouvez déployer des solutions sur Azure Cosmos DB qui sont efficaces, fiables, sécurisées, optimisées pour les coûts et qui sont parfaitement opérationnelles. Ces conseils se concentrent sur les cinq piliers de l’excellence de l’architecture dans l’infrastructure well-architected :
Ce guide de révision part du principe que vous avez une connaissance opérationnelle d’Azure Cosmos DB et que vous connaissez bien ses fonctionnalités. Pour plus d’informations, consultez Azure Cosmos DB pour NoSQL.
Prérequis
Comprendre les piliers well-architected Framework peut aider à produire une architecture cloud de haute qualité, stable et efficace. Nous vous recommandons de commencer par passer en revue votre charge de travail à l’aide de l’évaluation de la révision d’Azure Well-Architected Framework.
Pour plus de contexte, passez en revue différentes architectures de référence qui reflètent les considérations de ce guide dans leur conception. Ces architectures incluent, mais ne sont pas limitées aux éléments suivants :
- Applications stratégiques distribuées à l’échelle mondiale à l’aide d’Azure Cosmos DB
- Applications serverless avec Azure Cosmos DB
- Application web multirégion avec réplication Azure Cosmos DB
Fiabilité
Comme avec n’importe quel service cloud, les défaillances peuvent se produire à la fois côté service et côté charge de travail. Il est impossible d’éviter toutes les défaillances potentielles, mais il est préférable de réduire les effets qu’un seul composant défaillant peut avoir sur toute votre charge de travail. Cette section comprend des considérations et des recommandations pour réduire les conséquences d’une défaillance ponctuelle.
Check-list pour la conception
- Réfléchissez à la façon dont votre niveau de cohérence et votre mode de réplication sélectionnés affectent l’objectif de point de récupération (RPO) dans une panne à l’échelle de la région.
- Concevez le déploiement de votre compte de base de données afin qu’il s’étende sur au moins deux régions dans Azure. En outre, distribuez votre compte sur plusieurs zones de disponibilité lorsqu’ils sont proposés dans votre région Azure.
- Évaluez les stratégies d’écriture multirégion et à région unique pour votre charge de travail. Pour l’écriture à région unique, concevez votre charge de travail pour avoir au moins une deuxième région de lecture pour le basculement. Activez le basculement automatique pour les scénarios d’écriture à région unique et de lecture multirégion. Pour l’écriture multirégion, comparez les compromis en complexité et en cohérence par rapport aux avantages de l’écriture dans plusieurs régions. Passez en revue les attentes lors d’une panne régionale pour les comptes d’écriture à région unique et multirégion.
- Activez le basculement géré par le service pour votre compte.
- Concevez un test de bout en bout de haute disponibilité pour votre application.
- Parcourez les processus de sauvegarde courants, y compris, mais pas limités à ; la restauration à un point dans le temps, la récupération à partir d’opérations destructrices accidentelles, la restauration des ressources supprimées et la restauration dans une autre région à un moment donné. Configurez le compte avec une sauvegarde continue, en choisissant la période de rétention appropriée en fonction des besoins de votre entreprise.
- Explorez le guide de conception d’applications résilientes, passez en revue la stratégie de nouvelle tentative par défaut pour les kits SDK et planifiez la gestion personnalisée pour des erreurs temporaires spécifiques. Ces guides donnent les meilleures pratiques pour rendre le code d’application résilient aux erreurs temporaires.
Recommandations
Recommandation | Avantage |
---|---|
Distribuez votre compte Azure Cosmos DB entre les zones de disponibilité (le cas échéant). | Les zones de disponibilité fournissent une alimentation, un réseau et un refroidissement distincts isolant les défaillances matérielles sur un sous-ensemble de vos réplicas. Azure Cosmos DB a plusieurs réplicas qui s’étendent sur une seule zone de disponibilité aléatoire lorsque la fonctionnalité zones de disponibilité n’est pas utilisée. Si la fonctionnalité de zone de disponibilité est utilisée, les réplicas s’étendent sur plusieurs zones de disponibilité. |
Configurez votre compte Azure Cosmos DB pour couvrir au moins deux régions. | L’étendue de plusieurs régions empêche votre compte d’être entièrement indisponible s’il existe une panne de région isolée. |
Activez le basculement géré par le service pour votre compte. | Le basculement géré par le service permet à Azure Cosmos DB de modifier la région d’écriture d’un compte à plusieurs régions afin de préserver la disponibilité. Cette modification se produit sans interaction utilisateur. Comprendre les compromis avec le basculement géré par le service et planifier le basculement forcé si nécessaire. Pour plus d’informations, consultez la création d’applications hautement disponibles. |
Validez la disponibilité en testant le basculement manuellement avec le basculement géré par le service temporairement désactivé. | La désactivation temporaire du basculement de gestion des services vous permet de valider la haute disponibilité de bout en bout de votre application avec un basculement manuel démarré à l’aide d’un script ou du Portail Azure. Ensuite, vous pouvez réactiver le basculement géré par le service. |
Définitions Azure Policy
- Stratégie : Exiger au moins deux régions
- Stratégie : Activer le basculement géré par le service
- Stratégie : Exiger des régions de déploiement spécifiques
Sécurité
La sécurité est une partie essentielle de n’importe quelle architecture qui peut être facilement ignorée pour des raisons pratiques. Renforcez la sécurité de votre charge de travail finale en tenant compte de différentes meilleures pratiques de sécurité avant la création de la première ressource ou de la preuve de concept. Cette section inclut des considérations et des recommandations pour réduire le nombre de vulnérabilités de sécurité pour votre charge de travail finale.
Check-list pour la conception
- Réduisez la surface d’attaque en concevant pour utiliser des points de terminaison privés conformément à la base de référence de sécurité pour Azure Cosmos DB.
- Créez des rôles, des groupes et des affectations pour l’accès au plan de contrôle et au plan de données à votre compte en fonction du principe d’accès avec privilège minimum. Envisagez de désactiver l’authentification basée sur des clés.
- Évaluez la conformité et les certifications au niveau du service dans le contexte des exigences globales actuelles en matière de données personnelles.
- Chiffrer les données au repos ou en mouvement à l’aide de clés gérées par le service ou de clés gérées par le client (CMK).
- Auditez l’accès utilisateur, les violations de sécurité et les opérations de ressources avec les journaux du plan de contrôle.
- Surveillez la sortie des données, les modifications de données, l’utilisation et la latence avec les métriques du plan de données.
Recommandations
Recommandation | Avantage |
---|---|
Implémentez, au minimum, les bases de référence de sécurité de la protection des données et de la gestion des identités. | Passez par la base de référence de sécurité, notamment la gestion des identités et la protection des données. Implémentez les recommandations pour sécuriser votre compte Azure Cosmos DB. |
Désactivez les points de terminaison publics et utilisez des points de terminaison privés dans la mesure du possible. | Évitez de laisser des points de terminaison publics inutiles ou inutilisés disponibles pour les attaques de surface d’exposition sur votre compte. |
Utilisez le contrôle d’accès en fonction du rôle pour limiter l’accès au plan de contrôle aux identités et groupes spécifiques et dans l’étendue des affectations bien définies. | Utilisez le contrôle d’accès en fonction du rôle pour empêcher l’accès involontaire à votre compte. Attribuez des rôles et des autorisations appropriés aux utilisateurs ou aux applications qui accèdent à Azure Cosmos DB. |
Créez des points de terminaison et des règles de réseau virtuel pour limiter l’accès au compte. | Implémentez des points de terminaison de service de réseau virtuel et des règles de pare-feu pour restreindre l’accès à votre compte Azure Cosmos DB. Utilisez des groupes de sécurité réseau (NSG) pour contrôler le trafic entrant et sortant vers et depuis les ressources Azure Cosmos DB. La limitation de l’accès aux réseaux approuvés et l’application de mesures de sécurité réseau appropriées permet de protéger vos données contre l’accès non autorisé. |
Suivez les meilleures pratiques de développement logiciel pour sécuriser l’accès aux données. | Suivez les pratiques de codage sécurisées et effectuez des révisions de code sécurisées lors du développement d’applications qui interagissent avec Azure Cosmos DB. Protégez-vous contre les vulnérabilités de sécurité courantes telles que les attaques par injection, les scripts intersites (XSS) ou les références d’objets directs non sécurisées (IDOR). Implémentez la validation d’entrée, les requêtes paramétrées et la gestion des erreurs appropriées pour les codes d’état HTTP courants afin d’éviter les risques de sécurité. |
Surveillez les journaux du plan de contrôle pour les violations. | La supervision vous permet de suivre les modèles d’accès et les journaux d’audit, en vous assurant que votre base de données reste sécurisée et conforme aux réglementations pertinentes en matière de protection des données. La surveillance des métriques de plan de données peut également aider à identifier des modèles inconnus susceptibles de révéler une violation de sécurité. Pour plus d’informations, consultez la liste des case activée de sécurité pour les bases de données Azure. |
Activer Microsoft Defender pour Azure Cosmos DB | Microsoft Defender détecte les tentatives d’exploitation de bases de données dans votre compte Azure Cosmos DB pour NoSQL. Defender détecte des injections SQL potentielles, des modèles d’accès suspects et d’autres exploitations potentielles. |
Définitions Azure Policy
- Stratégie : Activer Microsoft Defender
- Stratégie : Exiger un point de terminaison de service de réseau virtuel
- Stratégie : désactiver l’authentification locale
- Stratégie : Exiger des règles de pare-feu
Optimisation des coûts
Les caractéristiques de votre charge de travail et l’implémentation de votre solution peuvent influencer le coût final d’exécution dans Azure. Prenez en compte les principaux pilotes tels que votre stratégie de partitionnement, votre niveau de cohérence, votre réplication et votre type d’écriture lors de la conception de votre charge de travail. Lors du dimensionnement de votre charge de travail, tenez compte de la nature en lecture/écriture de vos données, de la taille des éléments moyens, de la normalisation et de la durée de vie. Cette section inclut des considérations et des recommandations pour simplifier les coûts de votre charge de travail.
- Concevez une stratégie d’indexation qui prend en compte les opérations et les requêtes que vous effectuez généralement dans votre charge de travail.
- Déterminez une clé de partition ou un jeu de clés de partition qui ont une valeur qui a une carte inalité élevée et ne change pas. Utilisez les recommandations existantes et les bonnes pratiques pour vous aider à sélectionner une clé de partition appropriée. Prenez également en compte votre stratégie d’indexation lors de la détermination d’une clé de partition.
- Sélectionnez un schéma d’allocation de débit approprié pour votre charge de travail. Passez en revue les avantages du débit standard et de mise à l’échelle automatique distribué au niveau de la base de données ou du conteneur. Prenez également en compte serverless le cas échéant. Passez en revue les modèles de trafic de votre charge de travail dans le contexte de la sélection d’un schéma d’allocation de débit.
- Considérez les niveaux de cohérence tels qu’ils sont liés à votre charge de travail. Déterminez également si les sessions clientes doivent modifier le niveau de cohérence par défaut.
- Calculez le stockage global de données attendu pour votre charge de travail. La taille des éléments et des index influence tous les coûts de stockage des données. Calcuez l’impact de la réplication et de la sauvegarde sur les coûts de stockage.
- Créez une stratégie pour supprimer automatiquement les éléments plus anciens qui ne sont plus utilisés ou nécessaires. Si nécessaire, exportez ces éléments vers une solution de stockage à moindre coût avant leur suppression.
- Évaluez vos requêtes les plus courantes qui réduisent les recherches entre partitions. Utilisez ces informations pour informer le processus de sélection d’une clé de partition ou de personnalisation d’une stratégie d’indexation.
Recommandations
Recommandation | Avantage |
---|---|
Surveillez l’utilisation et les modèles de RU/s. | Utilisez des métriques pour surveiller la consommation de RU à partir du début de votre solution. Utilisez des requêtes et d’autres techniques de recherche de données pour rechercher des antimodèles dans votre code d’application. |
Personnalisez votre stratégie d’indexation pour mapper à votre charge de travail. | La stratégie d’indexation par défaut indexe tous les chemins d’accès d’un élément, et cette stratégie peut avoir un impact significatif sur la consommation et les coûts des RU. Utilisez une stratégie d’indexation conçue en fonction uniquement des chemins d’accès que vous devez indexer pour vos requêtes courantes. Pour les charges de travail lourdes en écriture, désactivez l’indexation automatique des colonnes non utilisées dans les requêtes. |
Sélectionnez la clé de partition idéale pour votre charge de travail. | La clé de partition[s] doit distribuer uniformément la consommation de débit et le stockage des données entre les partitions logiques. La sélection doit également réduire le nombre de requêtes entre partitions non liées. Évitez les partitions chaudes qui reçoivent une quantité disproportionnée de trafic, car les partitions déséquilibrables peuvent augmenter les coûts de débit et les erreurs temporaires. Utilisez les requêtes de recherche les plus courantes pour déterminer les clés de partition potentielles qui exécutent probablement uniquement des requêtes à partition unique ou à partition croisée limitée. |
Utilisez le débit serverless ou provisionné, l’approvisionnement manuel ou la mise à l’échelle automatique, au niveau de la base de données ou du conteneur, le cas échéant pour votre charge de travail. | Comparez les types de débit approvisionnés et sélectionnez l’option appropriée pour votre charge de travail. En règle générale, les charges de travail plus petites et de développement/test peuvent bénéficier d’un débit serverless ou d’un débit partagé manuel au niveau de la base de données. Les charges de travail plus volumineuses et critiques peuvent tirer parti du débit approvisionné affecté au niveau du conteneur. |
Configurez le niveau de cohérence par défaut pour votre application. Le cas échéant, rétrogradez le niveau de cohérence par défaut dans les sessions clientes. | Vous n’avez peut-être pas toujours besoin de modifier le niveau de cohérence par défaut standard ou de le remplacer dans les sessions clientes. Considérez les coûts plus élevés associés aux lectures à des niveaux de cohérence plus forts. |
Pour les charges de travail de développement/test, utilisez l’émulateur Azure Cosmos DB. | L’émulateur Azure Cosmos DB est une option pour le développement/test et l’intégration continue qui peut économiser sur les coûts de ces charges de travail courantes pour votre équipe de développement. L’émulateur est également disponible en tant qu’image conteneur Docker. |
Utiliser des opérations de traitement par lots transactionnels | Concevoir des partitions pour tirer parti des opérations de traitement par lots transactionnelles au sein d’une clé de partition logique pour l’insertion. Utilisez des opérations de traitement par lots dans les SDK côté client pour l’insertion, la mise à jour ou la suppression de plusieurs documents dans une seule demande de transaction. Cette étape peut réduire le nombre de requêtes individuelles et peut éventuellement entraîner une meilleure efficacité du débit. |
Utilisez la projection pour réduire les coûts de débit des jeux de résultats de requêtes volumineux. | Créez des requêtes pour projeter uniquement le nombre minimal de champs requis à partir d’un jeu de résultats. Si des calculs sur des champs sont nécessaires, évaluez le coût de débit d’exécution de ces calculs côté serveur et côté client. |
Évitez d’utiliser des requêtes entre partitions non liées. | Évaluez et créez des requêtes pour vous assurer qu’elles effectuent une recherche dans une seule partition logique chaque fois que possible. Utilisez des filtres de requête pour contrôler les partitions logiques des cibles de requête. Si une requête doit effectuer une recherche sur des partitions logiques, la liaison de la requête pour rechercher uniquement un sous-ensemble de partitions logiques au lieu d’une analyse complète. |
Implémentez la durée de vie (TTL) pour supprimer les éléments inutilisés. | Utilisez la durée de vie pour supprimer automatiquement les données qui ne sont plus nécessaires. Gérez les coûts de stockage en supprimant les données expirées ou obsolètes. Si nécessaire, exportez les données expirées vers une solution de stockage à moindre coût. |
Considérez un magasin analytique pour les agrégations lourdes. | Le magasin analytique Azure Cosmos DB synchronise automatiquement vos données avec un magasin de colonnes distinct pour optimiser les agrégations volumineuses, les rapports et les requêtes analytiques. |
Définitions Azure Policy
Excellence opérationnelle
Les charges de travail doivent être surveillées après leur déploiement pour s’assurer qu’elles s’exécutent comme prévu. En outre, la surveillance des charges de travail peut aider à déverrouiller de nouvelles efficacités non immédiatement évidentes pendant la phase de planification. Dans les scénarios catastrophiques, les données de diagnostic sont la clé pour découvrir pourquoi un incident de gravité élevée a pu se produire. Cette section inclut des considérations et des recommandations pour surveiller les événements et les caractéristiques de vos charges de travail.
Check-list pour la conception
- Rédigez une stratégie de surveillance des journaux et des métriques pour différencier les différentes charges de travail, marquer des scénarios exceptionnels, suivre les modèles dans les exceptions/erreurs et suivre les performances de l’ordinateur hôte.
- Concevoir des charges de travail volumineuses pour utiliser des opérations en bloc dans la mesure du possible.
- Définissez plusieurs alertes pour surveiller la limitation, analyser l’allocation de débit et suivre la taille de vos données.
- Concevez une stratégie de supervision pour la disponibilité de votre solution entre les régions.
- Créez et appliquez les meilleures pratiques pour automatiser le déploiement de votre compte et ressources Azure Cosmos DB pour NoSQL.
- Planifiez les seuils de métriques attendus en fonction de la conception de partition et d’index. Assurez-vous qu’il existe un plan de surveillance de ces métriques pour déterminer la proximité des seuils planifiés.
Recommandations
Recommandation | Avantage |
---|---|
Assurez-vous que les développeurs d’applications utilisent la dernière version du Kit de développement logiciel (SDK) développeur. | Chaque Kit de développement logiciel (SDK) Azure Cosmos DB pour NoSQL a une version minimale recommandée. Pour plus d’informations, consultez le Kit de développement logiciel (SDK) .NET et le Kit de développement logiciel (SDK) Java. |
Créez des identificateurs dans l’application cliente pour différencier les charges de travail. | Envisagez des indicateurs, tels que le suffixe de l’agent utilisateur, pour identifier la charge de travail à laquelle chaque entrée de journal ou chaque métrique doit être associée. |
Capturez des diagnostics supplémentaires à l’aide du Kit de développement logiciel (SDK) du développeur. | Utilisez les techniques d’injection de diagnostics pour chaque Kit de développement logiciel (SDK) pour ajouter des informations supplémentaires sur la charge de travail en même temps que les métriques et les journaux par défaut. Pour plus d’informations, consultez le Kit de développement logiciel (SDK) .NET et le Kit de développement logiciel (SDK) Java. |
Créez des alertes associées aux ressources de l’ordinateur hôte. | Connecter ivity et les problèmes de disponibilité peuvent se produire en raison de problèmes liés à l’ordinateur hôte côté client. Surveillez les ressources telles que le processeur, la mémoire et le stockage sur des machines hôtes avec des applications clientes à l’aide des kits SDK Azure Cosmos DB pour NoSQL. |
Utilisez les fonctionnalités en bloc des kits SDK clients pour les opérations volumineuses. | Les scénarios qui nécessitent un haut degré de débit bénéficient de l’utilisation de la fonctionnalité en bloc du Kit de développement logiciel (SDK). La fonctionnalité en bloc gère et gère automatiquement les opérations par lots pour optimiser le débit. |
Créez des alertes pour la limitation du débit. | Utilisez des alertes pour suivre la limitation du débit au-delà des seuils attendus. Au fil du temps, passez en revue et ajustez les alertes à mesure que vous en apprenez davantage sur votre charge de travail par rapport à Azure Cosmos DB. La métrique consommation de RU normalisée est une métrique qui mesure le pourcentage d’utilisation du débit approvisionné sur une base de données ou un conteneur. Si cette métrique est cohérente à 100 %, les requêtes retournent probablement une erreur temporaire. |
Suivez les performances des requêtes à l’aide de métriques. | Utilisez des métriques pour suivre les performances de vos requêtes principales au fil du temps. Évaluez s’il existe des économies à trouver en mettant à jour la stratégie d’indexation ou en modifiant les requêtes. Si les performances des requêtes sont médiocres, résolvez les problèmes de performances et appliquez les meilleures pratiques de requête. Pour plus d’informations, consultez les conseils sur les performances des requêtes. |
Utilisez des modèles pour déployer automatiquement des ressources de compte. | Envisagez d’utiliser des modèles Azure Resource Manager, Bicep ou Terraform pour automatiser le déploiement de votre compte et les ressources suivantes. Assurez-vous que votre équipe utilise les mêmes modèles pour effectuer le déploiement sur d’autres environnements hors production. |
Suivez les métriques clés pour identifier les problèmes courants dans votre charge de travail. | Utilisez des métriques spécifiques pour trouver des problèmes courants dans votre charge de travail, y compris, mais pas limité à ; Utilisation des RU, utilisation des RU par partition, limitation et volumes de requête par type. Pour plus d’informations, consultez la référence des données de surveillance. |
Définitions Azure Policy
Efficacité des performances
- Définissez une base de référence de performances pour votre application. Mesurez le nombre d’utilisateurs et de transactions simultanés que vous devrez peut-être gérer. Tenez compte des caractéristiques de charge de travail telles que votre flux utilisateur moyen, les opérations courantes et les pics d’utilisation.
- Recherchez vos requêtes les plus courantes et les plus complexes. Identifiez les requêtes qui utilisent plusieurs recherches, jointures ou agrégats. Tenez compte de ces requêtes dans toutes les considérations de conception relatives à la clé de partition ou à la stratégie d’indexation.
- Pour les requêtes les plus courantes, déterminez le nombre de résultats attendus par page. Ce nombre permet de formaliser un nombre d’éléments mis en mémoire tampon pour les résultats prérécupérés.
- Recherchez vos utilisateurs cibles. Déterminez les régions Azure les plus proches.
- Identifiez les requêtes qui utilisent un ou plusieurs champs de classement. Identifiez également les opérations qui ont un impact sur plusieurs champs. Incluez ces champs explicitement dans la conception de stratégie d’indexation.
- Les éléments de conception de sorte que leurs documents JSON correspondants soient aussi petits que possible. Compte tenu du fractionnement des données entre plusieurs éléments si nécessaire.
- Identifiez les requêtes sur les tableaux enfants et déterminez s’ils sont candidats à des sous-requêtes plus efficaces.
- Déterminez si votre charge de travail nécessite un magasin analytique. Considérez les magasins analytiques et les services comme Azure Synapse Link pour les requêtes extrêmement complexes.
Recommandation | Avantage |
---|---|
Configurez votre débit en fonction de votre base de référence de performances. | Utilisez des outils comme la calculatrice de capacité pour déterminer la quantité de débit requise pour votre base de référence de performances. Utilisez des fonctionnalités telles que la mise à l’échelle automatique pour mettre à l’échelle votre débit réel afin de correspondre plus étroitement à votre charge de travail réelle. Surveillez votre consommation réelle de débit par la suite et apportez des ajustements. |
Utilisez les techniques d’optimisation côté client et serveur si nécessaire. | Tirez parti du cache intégré intégré. Configurez le Kit de développement logiciel (SDK) pour gérer le nombre d’éléments prérécupérés (mis en mémoire tampon) et retournés pour chaque page. |
Déployez Azure Cosmos DB pour NoSQL dans les régions les plus proches de vos utilisateurs finaux. | Réduisez la latence en déployant Azure Cosmos DB pour NoSQL dans les régions les plus proches de vos utilisateurs finaux autant que possible. Tirez parti de la réplication de lecture pour fournir des performances de lecture performantes, quelle que soit la façon dont vous configurez l’écriture (une ou plusieurs régions). Configurez le Kit de développement logiciel (SDK) (.NET/Java) pour préférer les régions plus proches de votre utilisateur final. |
Configurez le Kit de développement logiciel (SDK) pour le mode Direct. | Le mode direct est l’option préférée pour optimiser les performances. Ce mode permet à votre client d’ouvrir des connexions TCP directement aux partitions du service et d’envoyer des requêtes directement sans passerelle intermédiaire. Ce mode offre de meilleures performances, car il y a moins de tronçons réseau. |
Désactivez l’indexation pour les opérations en bloc. | S’il existe de nombreuses opérations d’insertion/remplacement/upsert, désactivez l’indexation pour améliorer la vitesse de l’opération tout en utilisant la prise en charge en bloc du KIT de développement logiciel (SDK) correspondant. L’indexation peut être immédiatement réenable ultérieurement. |
Créez des index composites pour les champs utilisés dans les opérations complexes. | Les index composites peuvent augmenter l’efficacité des opérations sur plusieurs champs par ordre de grandeur. Dans de nombreux cas, utilisez des index composites pour ORDER BY les instructions avec plusieurs champs. |
Optimisez les ordinateurs clients hôtes pour les kits SDK. | Pour le cas le plus courant, utilisez au moins 4 cœurs et 8 Go de mémoire sur des ordinateurs hôtes de 64 bits à l’aide des kits SDK (.NET/Java). Activez également la mise en réseau accélérée sur les ordinateurs hôtes. |
Utilisez le modèle singleton pour la classe dans la CosmosClient plupart des kits SDK. |
Utilisez la classe cliente dans la plupart des kits SDK en tant que singleton. La classe cliente gère son propre cycle de vie et est conçue pour ne pas être supprimée. La création et la suppression constantes d’instances peuvent entraîner une réduction des performances. |
Conservez les tailles d’élément inférieures à 100 Ko en taille. | Les éléments plus volumineux sont plus volumineux pour les opérations courantes de lecture et d’écriture. Les requêtes sur les éléments plus volumineux qui projetent tous les champs peuvent également avoir un coût de débit significatif. |
Utilisez des sous-requêtes stratégiquement pour optimiser les requêtes qui rejoignent des jeux de données volumineux. | Les requêtes qui joignent des tableaux enfants peuvent augmenter la complexité si plusieurs tableaux sont impliqués et non filtrés. Par exemple, une requête qui joint plus de deux tableaux d’au moins 10 éléments chacun peut se développer à 1 000 tuples+ . Optimisez les expressions de jointure automatique à l’aide de sous-requêtes pour filtrer les tableaux avant de joindre des tableaux dans l’élément. Pour les requêtes entre partitions, optimisez votre requête pour inclure un filtre sur la clé de partition afin d’optimiser le routage de votre requête vers la quantité minimale de partitions possibles. |
Utilisez des charges de travail analytiques pour les requêtes les plus complexes. | Si vous exécutez des agrégations fréquentes ou joignez des requêtes sur des conteneurs volumineux, envisagez d’activer le magasin analytique et d’effectuer des requêtes dans Azure Synapse Analytics. |
Définitions Azure Policy
Ressources supplémentaires
Envisagez d’autres ressources liées à Azure Cosmos DB pour NoSQL.
Conseils du Centre d’architecture Azure
- Architecture mutualisée et Azure Cosmos DB
- Recherche visuelle dans le commerce de détail avec Azure Cosmos DB
- Le gaming avec Azure Cosmos DB
- Applications serverless avec Azure Cosmos DB
- Personnalisation avec Azure Cosmos DB