

# PERF 4  Comment sélectionner votre solution de bases de données ?
<a name="w2aac19c11b5c11"></a>

 La solution de base de données optimale pour un système varie en fonction des exigences de cohérence, de disponibilité, de tolérance des partitions, de latence, de durabilité, d'évolutivité et de capacités de requête. De nombreux systèmes utilisent des solutions de base de données différentes pour divers sous-systèmes et activent des fonctionnalités distinctes pour améliorer les performances. La sélection d'une solution de base de données et de fonctionnalités incorrectes pour un système peut conduire à une efficacité moindre des performances. 

**Topics**
+ [PERF04-BP01 Comprendre les caractéristiques des données](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 Évaluer les options disponibles](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 Collecter et archiver les métriques de performance de la base de données](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 Choisir le stockage de données en fonction des modèles d'accès](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 Optimiser le stockage de données en fonction des métriques et des modèles d'accès](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 Comprendre les caractéristiques des données
<a name="perf_right_database_solution_understand_char"></a>

 Choisissez vos solutions de gestion des données pour qu'elles correspondent de manière optimale aux caractéristiques, aux modèles d'accès et aux exigences des jeux de données de votre charge de travail. Lors de la sélection et de la mise en œuvre d'une solution de gestion des données, vous devez vous assurer que les caractéristiques d'interrogation, de mise à l'échelle et de stockage prennent en charge les exigences de données de votre charge de travail. Découvrez dans quelle mesure les différentes options de base de données correspondent à vos modèles de données et quelles options de configuration conviennent le mieux à votre cas d'utilisation.  

 AWS fournit de nombreux moteurs de base de données dédiés, y compris des bases de données relationnelles, de valeurs-clés, de documents, en mémoire, graphiques, de séries chronologiques et de registre. Chaque solution de gestion de données propose des options et des configurations pour prendre en charge vos cas d'utilisation et vos modèles de données. Il se peut que votre charge de travail fonctionne avec plusieurs solutions de base de données différentes, selon les caractéristiques des données. En sélectionnant les solutions de base de données les plus adaptées à un problème spécifique, vous vous éloignez des bases de données monolithiques qui offrent une approche universelle restrictive et se concentrent sur la gestion des données pour répondre aux besoins de votre client. 

 **Résultat souhaité :** Les caractéristiques des données de charge de travail sont documentées avec suffisamment de détails pour permettre la sélection et la configuration des solutions de base de données sous-jacentes et fournir un aperçu des alternatives potentielles. 

 **Anti-modèles courants :** 
+  Ne pas envisager des moyens de segmenter les grands jeux de données en plus petites collections de données ayant des caractéristiques similaires, ce qui empêche d'utiliser des bases de données plus spécialisées qui correspondent mieux aux caractéristiques des données et à leur croissance. 
+  Ne pas identifier les modèles d'accès aux données à l'avance, ce qui entraîne des retouches coûteuses et complexes par la suite. 
+  Limiter la croissance en utilisant des stratégies de stockage de données qui ne s'adaptent pas assez rapidement. 
+  Choisir un seul type de base de données et un seul fournisseur pour toutes les charges de travail. 
+  S'en tenir à une solution de base de données, car l'équipe interne sait comment tirer parti de ce type particulier de solution. 
+  Conserver une solution de base de données, car elle fonctionnait bien dans un environnement sur site. 

 **Avantages liés au respect de cette bonne pratique :** Connaître toutes les solutions de base de données AWS afin de pouvoir identifier celle qui est adéquate pour vos différentes charges de travail. Une fois que vous avez sélectionné la solution de base de données appropriée pour votre charge de travail, vous pouvez tester rapidement chacune de ces offres de base de données pour savoir si elles demeurent pertinentes pour vos besoins en matière de charge de travail. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Débit 
+  Les économies de coûts potentielles peuvent ne pas être identifiées. 
+  Les données peuvent ne pas être sécurisées au niveau requis. 
+  L'accès aux données et les performances de stockage peuvent ne pas être optimaux. 

## Directives d'implémentation
<a name="implementation-guidance"></a>

 Définissez les caractéristiques des données et les modèles d'accès de votre charge de travail. Passez en revue toutes les solutions de base de données disponibles pour identifier celle qui répond à vos besoins en matière de données. Plusieurs bases de données peuvent être sélectionnées pour une charge de travail spécifique. Évaluez chaque service ou groupe de services individuellement. Si d'autres solutions potentielles de gestion des données sont identifiées pour une partie ou la totalité des données, expérimentez d'autres implémentations susceptibles de vous faire bénéficier d'avantages supplémentaires en termes de coût, de sécurité, de performances et de fiabilité. Mettez à jour la documentation existante, si une nouvelle approche de gestion des données est adoptée. 


|  **Type**  |  **Services AWS**  |  **Caractéristiques clés**  |  **Cas d'utilisation courants**  | 
| --- | --- | --- | --- | 
|  Relationnel  |  Amazon RDS, Amazon Aurora  |  Intégrité référentielle, transactions ACID, Schema-On-Write  |  ERP, CRM, logiciels commerciaux prêts à l'emploi  | 
|  Clé-valeur  |  Amazon DynamoDB  |  Haut débit, faible latence, évolutivité quasi infinie  |  Paniers d'achat (commerce électronique), catalogues de produits, applications de chat  | 
|  Documents  |  Amazon DocumentDB  |  Stockage de documents JSON et requêtes portant sur n'importe quel attribut  |  Gestion de contenu (CMS), profils clients, applications mobiles  | 
|  En mémoire  |  Amazon ElastiCache, Amazon MemoryDB  |  Latence de l'ordre de la microseconde  |  Mise en cache, classements de joueurs en ligne  | 
|  Graphes  |  Amazon Neptune  |  Données hautement relationnelles où les relations entre les données ont un sens  |  Réseaux sociaux, moteurs de personnalisation, détection des fraudes  | 
|  Série chronologique  |  Amazon Timestream  |  Données dont la dimension principale est le temps  |  DevOps, IoT, surveillance  | 
|  Larges colonnes  |  Amazon Keyspaces  |  Charges de travail Cassandra  |  Maintenance des équipements industriels, optimisation des itinéraires  | 
|  Registre  |  Amazon QLDB  |  Registre des changements immuable et cryptographiquement vérifiable  |  Systèmes d'enregistrement, santé, chaînes d'approvisionnement, institutions financières  | 

 **Étapes d'implémentation** 

1.  Comment les données sont-elles structurées (par exemple, non structurées, clé-valeur, semi-structurées, relationnelles) ? 

   1.  Si les données ne sont pas structurées, envisagez un stockage d'objets comme [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) ou une base de données NoSQL telle qu' [Amazon DocumentDB.](https://aws.amazon.com/documentdb/) 

   1.  Pour les données clé-valeur, envisagez [DynamoDB](https://aws.amazon.com/documentdb/), [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) ou [MemoryDB.](https://aws.amazon.com/memorydb/) 

   1.  Si les données ont une structure relationnelle, quel niveau d'intégrité référentielle est requis ? 

      1.  Pour les contraintes de clé étrangère, les bases de données relationnelles comme [Amazon RDS](https://aws.amazon.com/rds/) et [Aurora](https://aws.amazon.com/rds/aurora/) peuvent fournir ce niveau d'intégrité. 

      1.  En règle générale, dans un modèle de données NoSQL, vous dénormalisez les données en un seul document ou en une collection de documents à récupérer en une seule requête au lieu de joindre des documents ou des tables.  

1.  La conformité ACID (atomicité, cohérence, isolement, durabilité) est-elle requise ? 

   1.  Si les propriétés ACID associées aux bases de données relationnelles sont requises, envisagez une base de données relationnelle comme [Amazon RDS](https://aws.amazon.com/rds/) et [Aurora.](https://aws.amazon.com/rds/aurora/) 

1.  Quel modèle de cohérence est requis ? 

   1.  Si votre application peut tolérer une cohérence éventuelle, envisagez une implémentation NoSQL. Passez en revue les autres caractéristiques pour choisir [la base de données NoSQL](https://aws.amazon.com/nosql/) la plus appropriée. 

   1.  Si une cohérence forte est requise, vous pouvez utiliser des lectures fortement cohérentes avec [DynamoDB](https://aws.amazon.com/documentdb/) ou une base de données relationnelle comme [Amazon RDS](https://aws.amazon.com/rds/). 

1.  Quels formats de requête et de résultat doivent être pris en charge (par exemple, SQL, CSV, Parque, Avro, JSON, etc.) ? 

1.  Quels types de données, tailles de champ et quantités globales sont présents (par exemple, texte, numérique, spatial, série temporelle calculée, binaire ou blob, document) ? 

1.  Comment les exigences de stockage vont-elles évoluer au fil du temps ? Comment cela affectera-t-il l'évolutivité ? 

   1.  Les bases de données sans serveur comme [DynamoDB](https://aws.amazon.com/documentdb/) et [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) évoluent dynamiquement jusqu'à un stockage quasi illimité. 

   1.  Les bases de données relationnelles ont des limites supérieures sur le stockage alloué et doivent souvent être partitionnées horizontalement via des mécanismes tels que le partitionnement une fois qu'elles atteignent ces limites. 

1.  Quelle est la proportion de requêtes en lecture par rapport aux requêtes en écriture ? La mise en cache pourrait-elle améliorer les performances ? 

   1.  Les charges de travail à lecture intensive peuvent bénéficier d'une couche de mise en cache, comme [ElastiCache](https://aws.amazon.com/elasticache/) ou [DAX,](https://aws.amazon.com/dynamodb/dax/) si la base de données est DynamoDB. 

   1.  Les lectures peuvent également être déchargées pour lire des réplicas avec des bases de données relationnelles comme [Amazon RDS](https://aws.amazon.com/rds/). 

1.  Le stockage et la modification (OLTP - Online Transaction Processing) ou la récupération et le reporting (OLAP - Online Analytical Processing) ont-ils une priorité plus élevée ? 

   1.  Pour un traitement transactionnel à haut débit, envisagez une base de données NoSQL comme DynamoDB ou Amazon DocumentDB. 

   1.  Pour les requêtes analytiques, envisagez une base de données en colonnes comme [Amazon Redshift](https://aws.amazon.com/redshift/) ou exportez les données vers Amazon S3 et effectuez des analyses à l'aide d' [Athena](https://aws.amazon.com/athena/) ou [QuickSight.](https://aws.amazon.com/quicksight/) 

1.  Ces données sont-elles sensibles et quel niveau de protection et de chiffrement nécessitent-elles ? 

   1.  Tous les moteurs Amazon RDS et Aurora prennent en charge le chiffrement des données au repos via AWS KMS. Microsoft SQL Server et Oracle prennent également en charge le chiffrement de données transparent (TDE) natif lors de l'utilisation de Amazon RDS. 

   1.  Pour DynamoDB, vous pouvez utiliser un contrôle d'accès précis avec [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) pour contrôler qui a accès à quelles données au niveau de la clé. 

1.  Quel est le niveau de durabilité requis pour les données ? 

   1.  Aurora réplique automatiquement vos données sur trois zones de disponibilité au sein d'une région. Autrement dit, vos données sont très durables avec moins de risque de perte de données. 

   1.  DynamoDB est automatiquement répliqué sur plusieurs zones de disponibilité, assurant ainsi la haute disponibilité et la durabilité des données. 

   1.  Amazon S3 fournit une durabilité de 99,999999999 %. De nombreux services de base de données comme Amazon RDS et DynamoDB prennent en charge l'exportation de données vers Amazon S3 pour une conservation et un archivage à long terme. 

1.  Les exigences [d'objectif de temps de récupération (RTO) ou d'objectifs de point de récupération (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) ont-elles une incidence sur la solution ? 

   1.  Amazon RDS, Aurora, DynamoDB, Amazon DocumentDB, et Neptune prennent tous en charge la récupération ponctuelle, ainsi que la sauvegarde et la restauration à la demande.  

   1.  Pour les exigences de haute disponibilité, les tables DynamoDB peuvent être répliquées globalement à l'aide de la fonction de [tables globales,](https://aws.amazon.com/dynamodb/global-tables/) et les clusters Aurora les clusters peuvent être répliqués sur plusieurs régions à l'aide de la fonction de base de données globale. De plus, les compartiments S3 peuvent être répliqués dans les Régions AWS à l'aide de la réplication entre régions.  

1.  Souhaitez-vous vous éloigner des moteurs de base de données commerciaux/des coûts de licence ? 

   1.  Envisagez des moteurs open source tels que PostgreSQL et MySQL sur Amazon RDS ou Aurora. 

   1.  Exploitez [AWS DMS](https://aws.amazon.com/dms/) et [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) pour passer des moteurs de bases de données commerciaux vers des moteurs open source. 

1.  Qu'attendez-vous de la base de données du point de vue opérationnel ? Le passage aux services gérés est-il une préoccupation majeure ? 

   1.  L'utilisation de Amazon RDS au lieu d'Amazon EC2 et de DynamoDB ou d'Amazon DocumentDB au lieu de l'auto-hébergement d'une base de données NoSQL contribue à réduire les frais généraux opérationnels. 

1.  Comment accédez-vous actuellement à la base de données ? S'agit-il uniquement d'un accès via une application, ou y a-t-il des utilisateurs BI et d'autres applications prêtes à l'emploi qui y sont connectées ? 

   1.  Si vous dépendez d'outils externes, vous devrez peut-être préserver la compatibilité avec les bases de données qu'ils prennent en charge. Amazon RDS est entièrement compatible avec les différentes versions de moteur qu'il prend en charge, notamment Microsoft SQL Server, Oracle, MySQL et PostgreSQL. 

1.  Voici une liste de services de gestion de données potentiels et des cas d'utilisation les plus adaptés : 

   1.  Les bases de données relationnelles stockent des données avec des schémas prédéfinis et des relations mutuelles. Ces bases de données sont conçues pour prendre en charge les transactions ACID (atomicité, cohérence, isolation et durabilité) et maintenir l'intégrité référentielle et la cohérence des données. De nombreuses applications traditionnelles, la planification des ressources d'entreprise (ERP), la gestion de la relation client (CRM) et l'e-commerce utilisent des bases de données relationnelles pour stocker leurs données. Vous pouvez exécuter un grand nombre de ces moteurs de base de données sur Amazon EC2 ou choisir parmi l'un des [services de base de données gérés par AWS](https://aws.amazon.com/products/databases/) : [Amazon Aurora](https://aws.amazon.com/rds/aurora), [Amazon RDS](https://aws.amazon.com/rds)et [Amazon Redshift](https://aws.amazon.com/redshift). 

   1.  Les bases de données de valeurs-clés sont optimisées pour les modèles d'accès courants, généralement pour stocker et récupérer de gros volumes de données. Ces bases de données fournissent des temps de réponse rapides, même en cas de volumes extrêmes de demandes simultanées. Les applications Web à trafic élevé, les systèmes d'e-commerce et les applications de jeu sont des cas d'utilisation typiques pour les bases de données de valeurs-clés. Dans AWS, vous pouvez utiliser [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), une base de données durable, multi-région et multi-maître entièrement gérée, dotée d'une sécurité intégrée, d'une sauvegarde et d'une restauration, ainsi que d'une mise en cache en mémoire pour les applications à l'échelle d'Internet. 

   1.  Les bases de données en mémoire sont utilisées pour les applications qui nécessitent un accès en temps réel aux données, la latence la plus faible et le débit le plus élevé. En stockant les données directement dans la mémoire, ces bases de données fournissent une latence en microsecondes aux applications pour lesquelles une latence en millisecondes n'est pas suffisante. Vous pouvez utiliser des bases de données en mémoire pour la mise en cache des applications, la gestion des sessions, les classements de jeux et les applications géospatiales. [Amazon ElastiCache](https://aws.amazon.com/elasticache/) est un magasin de données en mémoire entièrement géré, compatible avec [Redis](https://aws.amazon.com/elasticache/redis/) ou [Memcached](https://aws.amazon.com/elasticache/memcached). Dans le cas où les applications ont également des exigences de durabilité plus élevées, [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) offre cela en combinaison avec un service de base de données en mémoire durable pour des performances ultra-rapides. 

   1.  Les bases de données de documents sont conçues pour stocker des données semi-structurées sous forme de documents de type JSON. Ces bases de données aident les développeurs à créer et mettre à jour rapidement des applications telles que la gestion de contenu, les catalogues et les profils utilisateur. [Amazon DocumentDB](https://aws.amazon.com/documentdb/) est un service de base de données de documents rapide, évolutif, hautement disponible et entièrement géré, qui prend en charge les charges de travail MongoDB. 

   1.  Un magasin à colonnes larges est un type de base de données NoSQL. Il utilise des tables, des lignes et des colonnes, mais contrairement à une base de données relationnelle, les noms et le format des colonnes peuvent varier d'une ligne à l'autre dans la même table. Généralement, vous voyez un magasin de colonnes larges dans les applications industrielles à grande échelle pour la maintenance des équipements, la gestion des parcs et l'optimisation des itinéraires. [Amazon Keyspaces (pour Apache Cassandra)](https://aws.amazon.com/mcs/) est un service de base de données évolutif, hautement disponible et géré, compatible avec Apache Cassandra. 

   1.  Les bases de données de graphiques sont destinées aux applications qui doivent parcourir et interroger des millions de relations entre des ensembles de données graphiques hautement connectés avec une latence de millisecondes à grande échelle. De nombreuses entreprises utilisent des bases de données de graphiques pour la détection des fraudes, les réseaux sociaux et les moteurs de recommandation. [Amazon Neptune](https://aws.amazon.com/neptune/) est un service de base de données de graphiques rapide, fiable et entièrement géré qui facilite la création et l'exécution d'applications fonctionnant avec des ensembles de données hautement connectés. 

   1.  Les bases de données chronologiques collectent, synthétisent et extraient efficacement des informations à partir de données qui changent au fil du temps. Les applications IoT, les DevOps et la télémétrie industrielle peuvent utiliser des bases de données en séries chronologiques. [Amazon Timestream](https://aws.amazon.com/timestream/) est un service de base de données en séries chronologiques rapide, évolutif et entièrement géré pour l'IoT et les applications opérationnelles, qui facilite le stockage et l'analyse de milliards d'événements par jour. 

   1.  Les bases de données de registre fournissent une autorité centralisée et fiable pour conserver un enregistrement évolutif, immuable et vérifiable grâce au chiffrement des transactions pour chaque application. Il n'est pas rare de voir des bases de données de registre utilisées pour les systèmes d'enregistrement, la chaîne d'approvisionnement, les inscriptions et même les transactions bancaires. [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) est une base de données de registre entièrement gérée qui fournit un journal des transactions transparent, immuable et vérifiable grâce au chiffrement appartenant à une autorité centrale de confiance. Amazon QLDB suit chaque modification des données d'application et tient à jour un historique complet et vérifiable des modifications au fil du temps. 

 **Niveau d'effort du plan d'implémentation : **Si une charge de travail passe d'une solution de de base de données à une autre, il peut y avoir un niveau d'effort *élevé* lors de la refactorisation des données et de l'application.   

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+  [Bases de données cloud avec AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Mise en cache de bases de données AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Performances Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Les 10 meilleures techniques pour améliorer les performances d'Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [Choisir entre EC2 et Amazon RDS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [Bonnes pratiques d'implémentation pour Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **Vidéos connexes :** 
+ [AWS purpose-built databases (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Exemples connexes :** 
+  [Optimiser le modèle de données à l'aide du partage de données Amazon Redshift](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [Migrations des bases de données](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Démonstration de réplication MS SQL Server - AWS Database Migration Service (DMS)](https://github.com/aws-samples/aws-dms-sql-server) 
+  [Atelier pratique sur la modernisation des bases de données](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Exemples Amazon Neptune](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 Évaluer les options disponibles
<a name="perf_right_database_solution_evaluate_options"></a>

 Identifiez les options de base de données disponibles et déterminez comment elles peuvent optimiser vos performances avant de sélectionner votre solution de gestion des données. À l'aide des tests de charge, identifiez les métriques de base de données qui sont essentiels à votre charge de travail. Pendant que vous explorez les options de base de données, tenez compte de divers aspects tels que les groupes de paramètres, les options de stockage, la mémoire, le calcul, le réplica en lecture, la cohérence éventuelle, le regroupement de connexions et les options de mise en cache. Testez ces différentes options de configuration pour améliorer les métriques. 

 **Résultat souhaité :** Une charge de travail peut utiliser une ou plusieurs solutions de base de données en fonction des types de données. La fonctionnalité et les avantages de la base de données correspondent de manière optimale aux caractéristiques des données, aux modèles d'accès et aux exigences de la charge de travail. Pour optimiser les performances et les coûts de votre base de données, vous devez évaluer les modèles d'accès aux données afin d'identifier les options de base de données appropriées. Évaluez les temps de requête acceptables pour vous assurer que les options de base de données sélectionnées répondent aux exigences. 

 **Anti-modèles courants :** 
+  Ne pas identifier les modèles d'accès aux données. 
+  Ne pas connaître les options de configuration de la solution de gestion de données que vous avez choisie. 
+  Se concentrer uniquement sur l'augmentation de la taille de l'instance sans examiner les autres options de configuration disponibles. 
+  Ne pas tester les caractéristiques de mise à l'échelle de la solution choisie. 

 

 **Avantages liés au respect de cette bonne pratique :** En explorant et en expérimentant les options de base de données, vous pourriez réduire le coût de l'infrastructure, améliorer les performances et l'évolutivité et réduire l'effort requis pour maintenir vos charges de travail. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Débit 
+  Devoir optimiser son infrastructure *pour une base de données universelle* signifie faire des compromis inutiles. 
+  Coûts plus élevés en raison de la non-configuration de la solution de base de données pour qu'elle corresponde aux modèles de trafic. 
+  Des problèmes opérationnels peuvent découler des problèmes de mise à l'échelle. 
+  Les données peuvent ne pas être sécurisées au niveau requis. 

## Directives d'implémentation
<a name="implementation-guidance"></a>

 Comprenez les caractéristiques des données de votre charge de travail afin de pouvoir configurer vos options de base de données. Exécutez des tests de charge pour identifier les métriques clés de performance et les goulots d'étranglement. Utilisez ces caractéristiques et ces métriques pour évaluer les options de base de données et tester différentes configurations. 


|  Services AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Mise à l'échelle du calcul  |  Augmentation de la taille de l'instance, les instances Aurora Serverless se mettent à l'échelle automatiquement en réponse aux changements de charge  |  Mise à l'échelle automatique en lecture/écriture avec mode « capacité à la demande » ou mise à l'échelle automatique de la capacité de lecture/écriture allouée en mode « capacité allouée »  |  Augmentez la taille de l'instance  |  Augmentation de la taille de l'instance, ajout de nœuds au cluster  |  Augmentez la taille de l'instance  |  Mise à l'échelle automatique pour ajuster la capacité  |  Mise à l'échelle automatique en lecture/écriture avec mode « capacité à la demande » ou mise à l'échelle automatique de la capacité de lecture/écriture allouée en mode « capacité allouée »  |  Mise à l'échelle automatique pour ajuster la capacité  | 
|  Mise à l'échelle verticale des lectures  |  Tous les moteurs prennent en charge les réplicas en lecture. Aurora prend en charge la mise à l'échelle automatique des instances de réplica en lecture  |  Augmentation des unités de capacité de lecture allouées  |  Réplicas en lecture  |  Réplicas en lecture  |  Réplicas en lecture. Prend en charge la mise à l'échelle automatique des instances de réplica en lecture  |  Mise à l'échelle automatique  |  Augmentation des unités de capacité de lecture allouées  |  Augmentation automatique jusqu'aux limites de simultanéité documentées  | 
|  Mise à l'échelle verticale des écritures  |  Augmentation la taille de l'instance, regroupement des écritures dans l'application ou ajout d'une file d'attente devant la base de données. Mise à l'échelle horizontale via le partitionnement au niveau de l'application sur plusieurs instances  |  Augmentation des unités de capacité d'écriture allouées Assurer une clé de partition optimale pour empêcher la limitation d'écriture au niveau de la partition  |  Augmentation de la taille de l'instance principale  |  Utilisation de Redis en mode cluster pour répartir les écritures sur les partitions  |  Augmentation de la taille de l'instance  |  Les demandes d'écriture peuvent être limitées lors de la mise à l'échelle. Si vous rencontrez des exceptions de limitation, continuez à envoyer des données au même débit (ou supérieur) pour une mise à l'échelle automatique. Écritures par lots pour réduire les demandes d'écriture simultanées  |  Augmentation des unités de capacité d'écriture allouées Assurer une clé de partition optimale pour empêcher la limitation d'écriture au niveau de la partition  |  Augmentation automatique jusqu'aux limites de simultanéité documentées  | 
|  Configuration du moteur  |  Groupes de paramètres  |  Ne s'applique pas  |  Groupes de paramètres  |  Groupes de paramètres  |  Groupes de paramètres  |  Ne s'applique pas  |  Ne s'applique pas  |  Ne s'applique pas  | 
|  Mise en cache  |  Mise en cache en mémoire, configurable via des groupes de paramètres. Association à un cache dédié tel qu'ElastiCache pour Redis pour décharger les demandes d'éléments fréquemment consultés  |  Cache entièrement géré DAX (DAX) disponible  |  Mise en cache en mémoire. Association à un cache dédié tel qu'ElastiCache pour Redis pour décharger les demandes d'éléments fréquemment consultés (facultatif)  |  La fonction principale est la mise en cache  |  Utilisation du cache des résultats de requête pour mettre en cache le résultat d'une requête en lecture seule  |  Timestream a deux niveaux de stockage ; l'un d'entre eux est un niveau de stockage en mémoire hautes performances  |  Déploiement d'un cache dédié tel qu'ElastiCache pour Redis pour décharger les demandes d'éléments fréquemment consultés  |  Ne s'applique pas  | 
|  Haute disponibilité et reprise après sinistre  |  La configuration recommandée pour les charges de travail de production consiste à exécuter une instance de secours dans une deuxième zone de disponibilité pour assurer la résilience au sein d'une région.  Pour la résilience entre les régions, Aurora Global Database peut être utilisé  |  Hautement disponible dans une région. Les tables peuvent être répliquées dans les régions à l'aide des tables globales DynamoDB  |  Créez plusieurs instances dans les zones de disponibilité pour assurer la disponibilité.  Les instantanés peuvent être partagés entre les régions, et les clusters peuvent être répliqués à l'aide de DMS pour fournir une réplication/reprise après sinistre entre régions  |  La configuration recommandée pour les clusters de production consiste à créer au moins un nœud dans une zone de disponibilité secondaire.  ElastiCache Global Datastore peut être utilisé pour répliquer des clusters dans des régions.  |  Les réplicas en lecture dans d'autres zones de disponibilité servent de cibles de basculement.  Les instantanés peuvent être partagés entre les régions, et les clusters peuvent être répliqués à l'aide de flux Neptune pour répliquer les données entre deux clusters dans deux régions différentes.  |  Hautement disponible dans une région. La réplication entre régions nécessite le développement d'applications personnalisées à l'aide du SDK Timestream  |  Hautement disponible dans une région.  La réplication entre régions nécessite une logique d'application personnalisée ou des outils tiers  |  Hautement disponible dans une région.  Pour assurer la réplication entre les régions, exportez le contenu du journal Amazon QLDB vers un compartiment S3 et configurez le compartiment pour la réplication entre régions.  | 

 

 **Étapes d'implémentation** 

1.  Quelles sont les options de configuration disponibles pour les bases de données sélectionnées ? 

   1.  Les groupes de paramètres pour Amazon RDS et Aurora vous permettent d'ajuster les paramètres communs au niveau du moteur de base de données tels que la mémoire allouée pour le cache ou l'ajustement du fuseau horaire de la base de données 

   1.  Pour les services de base de données alloués comme Amazon RDS, Aurora, Neptune, Amazon DocumentDB et ceux déployés sur Amazon EC2, vous pouvez modifier le type d'instance, le stockage alloué et ajouter des réplicas en lecture. 

   1.  DynamoDB vous permet de spécifier deux modes de capacité : à la demande et alloué. Pour tenir compte des différentes charges de travail, vous pouvez basculer entre ces modes et augmenter la capacité allouée en mode alloué à tout moment. 

1.  La charge de travail en lecture ou en écriture est-elle importante ?  

   1.  Quelles sont les solutions disponibles pour décharger les lectures (réplicas en lecture, mise en cache, etc.) ?  

      1.  Pour les tables DynamoDB, vous pouvez décharger les lectures à l'aide de DAX pour la mise en cache. 

      1.  Pour les bases de données relationnelles, vous pouvez créer un cluster ElastiCache pour Redis et configurer votre application pour qu'elle lise d'abord les données à partir du cache, en revenant à la base de données si l'élément demandé n'est pas présent. 

      1.  Les bases de données relationnelles comme Amazon RDS et Aurora, et les bases de données NoSQL allouées telles que Neptune et Amazon DocumentDB prennent toutes en charge l'ajout de réplicas en lecture pour décharger les parties lues de la charge de travail. 

      1.  Les bases de données sans serveur comme DynamoDB se mettent à l'échelle automatiquement. Assurez-vous que vous disposez de suffisamment d'unités de capacité de lecture (RCU) allouées pour gérer la charge de travail. 

   1.  Quelles sont les solutions disponibles pour la mise à l'échelle des écritures (sharding des clés de partition, introduction d'une file d'attente, etc.) ? 

      1.  Pour les bases de données relationnelles, vous pouvez augmenter la taille de l'instance pour qu'elle s'adapte à une charge de travail accrue ou augmenter les IOPS provisionnés pour permettre un débit accru vers le stockage sous-jacent. 
         +  Vous pouvez également ajouter une file d'attente devant votre base de données plutôt que d'écrire directement dans la base de données. Ce modèle vous permet de dissocier l'ingestion de la base de données et de contrôler le débit afin que la base de données ne soit pas submergée.  
         +  Regrouper vos demandes d'écriture plutôt que de créer de nombreuses transactions de courte durée contribue à améliorer le débit dans les bases de données relationnelles à volume d'écriture élevé. 

      1.  Les bases de données sans serveur comme DynamoDB peuvent mettre à l'échelle le débit d'écriture automatiquement ou en ajustant les unités de capacité d'écriture allouées (WCU) en fonction du mode de capacité.  
         +  Cependant, vous pouvez toujours rencontrer des problèmes *avec les partitions actives* lorsque vous atteignez les limites de débit pour une clé de partition donnée. Pour pallier à ce problème, choisissez une clé de partition distribuée plus uniformément ou partitionnez en écriture la clé de partition.  

1.  Quels sont les pics de transactions par seconde (TPS) actuels ou attendus ? Testez l'utilisation de ce volume de trafic et de ce \$1X % de volume pour comprendre les caractéristiques de mise à l'échelle. 

   1.  Des outils natifs tels que pg\$1bench pour PostgreSQL peuvent être utilisés pour tester la base de données et identifier les goulots d'étranglement et les caractéristiques de mise à l'échelle. 

   1.  Le trafic de type production doit être capturé afin de pouvoir être réexécuté pour simuler des conditions réelles en plus des charges de travail synthétiques. 

1.  Si vous utilisez un calcul sans serveur ou élastiquement évolutif, testez l'impact de cette mise à l'échelle sur la base de données. Le cas échéant, ajoutez la gestion ou le regroupement des connexions pour réduire l'impact sur la base de données.  

   1.  RDS Proxy peut être utilisé avec Amazon RDS et Aurora pour gérer les connexions à la base de données.  

   1.  Les bases de données sans serveur comme DynamoDB n'ont pas de connexions associées, mais tenez compte de la capacité allouée et des politiques de mise à l'échelle automatique pour faire face aux pics de charge. 

1.  La charge est-elle prévisible, y a-t-il des pics de charge et des périodes d'inactivité ? 

   1.  En cas de périodes d'inactivité, envisagez de réduire la capacité allouée ou la taille de l'instance pendant ces périodes. Aurora Serverless V2 augmente et diminue automatiquement la capacité en fonction de la charge. 

   1.  Pour les instances hors production, envisagez de les suspendre ou de les arrêter en dehors des heures de travail. 

1.  Avez-vous besoin de segmenter et de décomposer vos modèles de données en fonction des modèles d'accès et des caractéristiques des données ? 

   1.  Envisagez d'utiliser AWS DMS ou AWS SCT pour déplacer vos données vers d'autres services. 

## Niveau d'effort du plan d'implémentation : 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

Pour respecter cette bonne pratique, vous devez connaître vos caractéristiques et métriques de données actuelles. La collecte de ces métriques, l'établissement d'un point de référence, puis l'utilisation de ces métriques pour identifier l'option de configuration de base de données idéale indique un niveau d'effort *faible* to *modéré* . La validation par des tests de charge et des expérimentations est conseillée. 

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+  [Bases de données cloud avec AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Mise en cache de bases de données AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Performances Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Les 10 meilleures techniques pour améliorer les performances d'Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Bonnes pratiques Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **Vidéos connexes :** 
+  [AWS purpose-built databases (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Exemples connexes :** 
+  [Exemples Amazon DynamoDB](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [Exemples de migration de base de données AWS](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Atelier sur la modernisation des bases de données](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Utilisation des paramètres de votre instance de base de données Amazon RDS for PostgreSQL](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 Collecter et archiver les métriques de performance de la base de données
<a name="perf_right_database_solution_collect_metrics"></a>

 Pour comprendre les performances de vos systèmes de gestion des données, il est important de suivre les métriques pertinentes. Ces métriques vous aideront à optimiser vos ressources de gestion de données, à vous assurer que les exigences de votre charge de travail sont satisfaites et que vous avez une vue d'ensemble claire sur le mode de fonctionnement de la charge de travail. Utilisez des outils, des bibliothèques et des systèmes qui enregistrent des mesures de performances liées aux performances de la base de données. 

 

 Il existe des métriques liées au système sur lequel la base de données est hébergée (par exemple, processeur, stockage, mémoire, IOPS), et il existe des métriques pour l'accès aux données elles-mêmes (par exemple, transactions par seconde, taux de requêtes, délais de réponse, erreurs). Ces métriques doivent être facilement accessibles à tous les membres des équipes d'assistance ou d'exploitation, et doivent contenir un historique suffisant pour permettre d'identifier les tendances, les anomalies et les goulots d'étranglement. 

 

 **Résultat souhaité :** L'enregistrement de plusieurs métriques de performance sur une période donnée est obligatoire pour la surveillance des performances des charges de travail de votre base de données. Cette surveillance vous permet non seulement de détecter les anomalies, mais aussi d'évaluer les performances par rapport aux métriques métier afin de vous assurer que vous répondez aux besoins de votre charge de travail. 

 **Anti-modèles courants :** 
+  Vous utilisez uniquement la recherche manuelle des fichiers journaux pour les métriques. 
+  Vous publiez uniquement des métriques sur les outils internes utilisés par votre équipe et vous n'avez pas une visibilité complète de votre charge de travail. 
+  Vous n'utilisez que les métriques par défaut enregistrées par le logiciel de surveillance que vous avez sélectionné. 
+  Vous n'examinez les métriques qu'en cas de problème. 
+  Vous ne surveillez que les métriques au niveau du système, sans capturer les métriques d'accès ou d'utilisation des données. 

 **Avantages liés au respect de cette bonne pratique :** La définition de points de référence pour les performances permet de mieux comprendre le comportement normal et les exigences des charges de travail. Les modèles anormaux peuvent être identifiés et débogués plus rapidement, améliorant ainsi les performances et la fiabilité de la base de données. La capacité de la base de données peut être configurée pour garantir un coût optimal sans compromettre les performances. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Débit 
+  L'incapacité à faire la différence entre le niveau de performance normal et le niveau de performance anormal crée des difficultés dans l'identification des problèmes et la prise de décision. 
+  Les économies de coûts potentielles peuvent ne pas être identifiées. 
+  Les modèles de croissance ne sont pas identifiés, ce qui peut entraîner une dégradation de la fiabilité ou des performances. 

## Directives d'implémentation
<a name="implementation-guidance"></a>

 Identifiez, collectez, agrégez et corrélez les métriques liées à la base de données. Ces métriques doivent inclure à la fois le système sous-jacent qui prend en charge la base de données et les métriques de la base de données. Les métriques système sous-jacentes peuvent inclure l'utilisation du processeur, la mémoire, le stockage sur disque disponible, les E/S de disque et les métriques entrantes et sortantes du réseau, tandis que les métriques de la base de données peuvent inclure les transactions par seconde, les principales requêtes, les taux de requêtes moyens, les temps de réponse, l'utilisation de l'index, les verrouillages de table, les délais d'expiration des requêtes et le nombre de connexions ouvertes. Ces données sont essentielles pour comprendre à la fois les performances de la charge de travail et l'utilisation de la solution de base de données. Utilisez ces métriques dans le cadre d'une approche fondée sur les données pour ajuster et optimiser les ressources de votre charge de travail.  

 **Étapes d'implémentation :** 

1.  Quelles sont les métriques de base de données à suivre ? 

   1.  [Métriques de surveillance pour Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [Surveillance avec Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [Surveillance améliorée](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [Métriques DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [Surveillance de DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [Surveillance de MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [Surveillance d'Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Métriques et dimensions des séries chronologiques](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Métriques au niveau du cluster pour Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [Surveillance d'Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [Surveillance de Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  La surveillance de la base de données bénéficierait-elle d'une solution de machine learning qui détecte les problèmes de performances et les anomalies opérationnelles ? 

   1.  [Amazon DevOps Guru pour Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) assure la visibilité des problèmes de performance et suggère des actions correctives. 

1.  Avez-vous besoin de détails au niveau de l'application sur l'utilisation de SQL ? 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) peut être instrumenté dans l'application pour obtenir des informations et encapsuler tous les points de données pour une seule requête. 

1.  Une solution de journalisation et de surveillance approuvée est-elle actuellement à ma disposition ? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) peut récupérer des métriques à partir des ressources de votre architecture. Vous pouvez également récupérer et publier des métriques personnalisées pour faire apparaître des métriques d'entreprise ou des métriques dérivées. Utilisez CloudWatch ou des solutions tierces pour définir des alarmes qui indiquent les dépassements de seuils. 

1.  Est-ce que vous avez identifié et configuré des politiques de conservation des données pour qu'elles correspondent à vos objectifs de sécurité et d'exploitation ? 

   1.  [Métriques de conservation des données pour CloudWatch](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [Conservation des données pour CloudWatch Logs](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **Niveau d'effort du plan d'implémentation : **Il existe un niveau d'effort *moyen* pour identifier, suivre, collecter, agréger et corréler les métriques de toutes les ressources de base de données. 

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+ [Mise en cache de bases de données AWS](https://aws.amazon.com/caching/database-caching/) 
+ [ Les 10 meilleures techniques pour améliorer les performances d'Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Bonnes pratiques Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Bonnes pratiques Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Bonnes pratiques Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Performances Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [Bases de données cloud avec AWS](https://aws.amazon.com/products/databases/) 
+  [Amazon RDS Performance Insights](https://aws.amazon.com/rds/performance-insights/) 

 **Vidéos connexes :** 
+ [AWS purpose-built databases (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Exemples connexes :** 
+  [Niveau 100 : surveillance avec les tableaux de bord CloudWatch](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [Infrastructure de collecte de métriques d'ingestion de jeux de données AWS](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Atelier sur la surveillance Amazon RDS](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 Choisir le stockage de données en fonction des modèles d'accès
<a name="perf_right_database_solution_access_patterns"></a>

 Utilisez les modèles d'accès de la charge de travail pour décider les services et technologies que vous allez utiliser. Outre les exigences non fonctionnelles telles que les performances et l'échelle, les modèles d'accès influencent fortement le choix de la base de données et des solutions de stockage. La première dimension à prendre en compte est le nécessité de prendre en charge ou non les transactions, la conformité ACID et les lectures cohérentes. Toutes les bases de données ne prennent pas en charge ces opérations, et la plupart des bases de données NoSQL fournissent un modèle de cohérence éventuel. La deuxième dimension importante est la répartition des écritures et des lectures dans le temps et dans l'espace. Les applications distribuées à l'échelle mondiale doivent tenir compte des modèles de trafic, de la latence et des exigences d'accès afin d'identifier la solution de stockage optimale. Le troisième aspect crucial à choisir est la flexibilité du modèle de requête, les modèles d'accès aléatoire et les requêtes uniques. Les considérations relatives aux fonctionnalités de requête hautement spécialisées pour le traitement du texte et du langage naturel, les séries chronologiques et les graphiques doivent également être prises en considération. 

 **Résultat souhaité :** Le stockage des données a été sélectionné en fonction des modèles d'accès aux données identifiés et documentés. Cela peut inclure les requêtes de lecture, d'écriture et de suppression les plus courantes, la nécessité d'effectuer des calculs et des agrégations ad hoc, la complexité des données, l'interdépendance des données et les besoins de cohérence requis. 

 **Anti-modèles courants :** 
+  Sélectionnez un seul fournisseur de base de données afin de simplifier la gestion des opérations. 
+  Vous supposez que les modèles d'accès aux données resteront cohérents au fil du temps. 
+  Vous implémentez des transactions complexes, la restauration et une logique de cohérence dans l'application. 
+  La base de données est configurée pour prendre en charge une rafale de trafic potentiellement élevé. Dès lors, les ressources de la base de données restent inactives la plupart du temps. 
+  Vous utilisez une base de données partagée pour des usages transactionnels et analytiques. 

 **Avantages liés au respect de cette bonne pratique :** La sélection et l'optimisation de votre stockage de données en fonction des modèles d'accès contribuent à réduire la complexité du développement et à optimiser vos opportunités de performances. Savoir quand utiliser les réplicas en lecture, les tables globales, le partitionnement des données et la mise en cache vous aidera à réduire les frais généraux opérationnels et à évoluer en fonction des besoins de votre charge de travail. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Moyenne entreprise 

## Directives d'implémentation
<a name="implementation-guidance"></a>

 Identifiez et évaluez votre modèle d'accès aux données pour sélectionner la configuration de stockage appropriée. Chaque solution de base de données dispose d'options pour configurer et optimiser votre solution de stockage. Utilisez les métriques et les journaux collectés et testez les options pour trouver la configuration optimale. Utilisez le tableau suivant pour passer en revue les options de stockage par service de base de données. 


|  Services AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Mise à l'échelle du stockage  |  Option de mise à l'échelle automatique du stockage disponible pour mettre automatiquement à l'échelle le stockage alloué. Les IOPS peuvent également être mises à l'échelle indépendamment du stockage alloué lors de l'utilisation des types de stockage IOPS provisionnés  |  Mise à l'échelle automatique. Les tables ne sont pas contraintes en termes de taille.  |  Option de mise à l'échelle automatique du stockage disponible pour mettre à l'échelle le stockage alloué  |  Le stockage est en mémoire, lié au type ou au nombre d'instances  |  Option de mise à l'échelle automatique du stockage disponible pour mettre automatiquement à l'échelle le stockage alloué  |  Configuration de la période de rétention pour les niveaux en mémoire et magnétiques, en jours  |  Augmentation et diminution automatiques du stockage des tables  |  Mise à l'échelle automatique. Les tables ne sont pas contraintes en termes de taille.  | 

 

 **Étapes d'implémentation :** 

1.  Identifiez et documentez la croissance prévue des données et du trafic. 

   1.  Amazon RDS et Aurora prennent en charge la mise à l'échelle automatique du stockage jusqu'aux limites documentées. Au-delà de ces limites, envisagez de transférer des données plus anciennes vers Amazon S3 pour l'archivage, d'agréger les données historiques à des fins d'analyse ou de les mettre à l'échelle horizontalement via le partitionnement. 

   1.  DynamoDB et Amazon S3 se mettent automatiquement à l'échelle pour atteindre un volume de stockage presque illimité. 

   1.  Les instances Amazon RDS et les bases de données exécutées sur EC2 peuvent être redimensionnées manuellement, et de nouveaux volumes EBS peuvent être ajoutés ultérieurement sur les instances EC2 pour un stockage supplémentaire.  

   1.  Les types d'instance peuvent être modifiés en fonction des changements d'activité. Par exemple, vous pouvez commencer avec une instance plus petite en phase de test, puis mettre à l'échelle l'instance lorsque vous commencez à recevoir du trafic de production vers le service. Aurora Serverless V2 se met automatiquement à l'échelle en fonction des changements de charge.  

1.  Documentez les exigences relatives aux performances normales et maximales (transactions par seconde, TPS, et requêtes par seconde, QPS) et à la cohérence (ACID et cohérence éventuelle). 

1.  Documentez les aspects de déploiement de la solution et les exigences d'accès à la base de données (global, multi-AZ, réplication en lecture, plusieurs nœuds d'écriture) 

 **Niveau d'effort du plan d'implémentation : **Si vous ne disposez pas de journaux ni de métriques pour votre solution de gestion des données, vous devrez les mettre en place avant d'identifier et de documenter vos modèles d'accès aux données. Une fois que votre modèle d'accès aux données sera identifié, la sélection et la configuration de votre stockage de données présenteront un niveau d'effort *faible* . 

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+ [ Mise en cache de bases de données AWS](https://aws.amazon.com/caching/database-caching/)
+ [Les 10 meilleures techniques pour améliorer les performances d'Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Bonnes pratiques Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Bonnes pratiques Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Bonnes pratiques Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Performances Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Bases de données cloud avec AWS](https://aws.amazon.com/products/databases/)
+  [Types de stockage Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **Vidéos connexes :** 
+ [AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Exemples connexes :** 
+  [Effectuer des expérimentations et des tests avec les tests de charge distribués sur AWS](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 Optimiser le stockage de données en fonction des métriques et des modèles d'accès
<a name="perf_right_database_solution_optimize_metrics"></a>

 Utilisez les caractéristiques de performances et les modèles d'accès qui optimisent la façon dont les données sont stockées ou interrogées pour obtenir les meilleures performances possible. Mesurez la façon dont les optimisations telles que l'indexation, la distribution de clé, la conception de l'entrepôt de données ou les stratégies de mise en cache affectent les performances du système ou l'efficacité globale. 

 **Anti-modèles courants :** 
+  Vous utilisez uniquement la recherche manuelle des fichiers journaux pour les métriques. 
+  Vous publiez des métriques uniquement dans des outils internes. 

 **Avantages liés au respect de cette bonne pratique :** Afin de vous assurer que vous avez les métriques requises pour la charge de travail, vous devez surveiller les métriques de performance de la base de données liées à la lecture et à l'écriture. Vous pouvez utiliser ces données pour ajouter de nouvelles optimisations pour les lectures et les écritures dans la couche de stockage de données. 

 **Niveau de risque exposé si cette bonne pratique n'est pas respectée :** Faible 

## Directives d'implémentation
<a name="implementation-guidance"></a>

 Optimiser le stockage des données en fonction de métriques et de modèles : utilisez les métriques rapportées pour identifier les zones présentant des performances insuffisantes dans votre charge de travail et pour optimiser les composants de votre base de données. Chaque système de base de données possède différentes caractéristiques de performances à évaluer, en particulier la façon dont les données sont indexées, mises en cache ou distribuées entre plusieurs systèmes. Mesurez l'impact de vos optimisations. 

## Ressources
<a name="resources"></a>

 **Documents connexes :** 
+  [Mise en cache de bases de données AWS](https://aws.amazon.com/caching/database-caching/) 
+  [Les 10 meilleures techniques pour améliorer les performances d'Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Bonnes pratiques Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Bonnes pratiques Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Bonnes pratiques Amazon Redshift Spectrum](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Performances Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Bases de données cloud avec AWS](https://aws.amazon.com/products/databases/) 
+  [Analyser les anomalies de performances avec DevOps Guru pour RDS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [Mode de capacité lecture/écriture pour DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **Vidéos connexes :** 
+  [AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Exemples connexes :** 
+  [Ateliers pratiques pour Amazon DynamoDB](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 