Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à cette recommandation de liste de contrôle d’efficacité des performances d’Azure Well-Architected Framework :
| PE :08 | Optimisez les performances des données. Optimisez les magasins de données, les partitions et les index pour leur utilisation prévue et réelle dans la charge de travail. |
|---|
Ce guide décrit les recommandations pour optimiser les performances des données. L’optimisation des performances des données consiste à affiner l’efficacité avec laquelle la charge de travail traite et stocke les données. Chaque opération de charge de travail, transaction ou calcul s’appuie généralement sur la récupération, le traitement et le stockage rapides et précis des données. Lorsque les performances des données sont optimisées, la charge de travail s’exécute en douceur. Les performances des données compromises créent un effet domino de l’efficacité médiocre des performances. L’échec de l’optimisation des performances des données entraîne des retards de réponse, une latence accrue et une scalabilité réduite. Elle met en péril l’efficacité de l’ensemble de la charge de travail.
Définitions
| Terme | Definition |
|---|---|
| Théorème CAP | Framework utilisé pour prendre en compte la cohérence, la disponibilité et la tolérance de partition pour expliquer les compromis dans la cohérence des données. |
| Reconstruction d’index de base de données | Activité de maintenance qui supprime et recrée un index. |
| Réorganisation des index de base de données | Activité de maintenance qui optimise l’index de base de données actuel. |
| Magasin de données | Ressource qui stocke des données telles qu’une base de données, un magasin d’objets ou un partage de fichiers. |
| Cohérence éventuelle | Modèle de synchronisation de données qui permet une incohérence temporaire dans les réplicas de données avant qu’ils ne soient finalement synchronisés. |
| Index | Structure de base de données qui fournit un accès rapide aux éléments. |
| Traitement analytique en ligne (OLAP) | Technologie qui organise les grandes bases de données métier, prend en charge l’analyse complexe et effectue des requêtes analytiques complexes sans affecter négativement les systèmes transactionnels. |
| Traitement des transactions en ligne (OLTP) | Technologie qui enregistre les interactions professionnelles lorsqu’elles se produisent dans les opérations quotidiennes d’une organisation. |
| Accès concurrentiel optimiste | Approche de la mise à jour des bases de données qui utilise des captures instantanées pour effectuer des mises à jour au lieu de mécanismes de verrouillage traditionnels, améliorant ainsi les performances et l’évolutivité. |
| Théorème PACELC | Framework utilisé pour prendre en compte la tolérance de partition, la disponibilité, la cohérence et la latence pour expliquer les compromis dans la cohérence des données. |
| Partitioning | Processus de division physique des données en magasins de données distincts. |
| Paramétrage des requêtes | Processus qui optimise la vitesse d’une requête de base de données. |
| Réplica en lecture | Copie dynamique d’une base de données primaire qui vous permet de décharger le trafic de lecture à partir d’une base de données d’écriture. |
Pour optimiser l’utilisation des données, assurez-vous que les magasins de données, les partitions et les index sont optimisés pour leur utilisation prévue et pour leur utilisation réelle dans une charge de travail. L’utilisation optimisée des données peut améliorer les performances des requêtes, réduire la consommation des ressources et améliorer l’efficacité globale du système. Tenez compte des stratégies suivantes :
Données de profil. Comprenez vos données et assurez-vous que votre modèle de données convient parfaitement à votre charge de travail. Tenez compte des facteurs tels que la normalisation des données, les stratégies d’indexation et les techniques de partitionnement. Pour une récupération efficace des données, veillez à sélectionner les types de données appropriés, à définir des relations entre les entités et à déterminer une stratégie d’indexation optimale.
Ajuster la configuration de votre stockage de données. Configurez votre infrastructure de stockage de données pour qu’elle s’aligne sur les exigences de votre charge de travail. Sélectionnez une technologie de stockage appropriée, par exemple des bases de données relationnelles, des bases de données NoSQL et des entrepôts de données. Optimisez les paramètres de stockage, tels que la taille de la mémoire tampon, les mécanismes de mise en cache et la compression.
Optimiser les performances des requêtes. Analysez et optimisez les requêtes qui s’exécutent dans la charge de travail. Utilisez des techniques telles que l’optimisation des requêtes, l’indexation et la mise en cache. Pour identifier les goulots d’étranglement, utilisez les plans de requête et les outils de surveillance des performances, puis apportez des améliorations nécessaires.
Surveillez et ajustez régulièrement le système. Surveillez en permanence les performances de votre charge de travail et effectuez une itération sur la configuration du stockage de données et les optimisations des requêtes. En fonction des meilleures pratiques de réglage des performances, analysez les métriques système, identifiez les domaines d’amélioration et implémentez les modifications.
Données de profil
Le profilage des données implique l’examen des données d’une source et la collecte d’informations à son sujet. L’objectif est de comprendre la qualité, la structure et les caractéristiques des données de charge de travail. Ce processus permet d’identifier les problèmes tels que les valeurs manquantes, les doublons, les formats incohérents et d’autres anomalies. Pour un profilage efficace des données, tenez compte des stratégies suivantes :
Comprendre la structure des données. Examinez la structure de vos données, y compris les tables, les colonnes et les relations. Déterminez les types de données, les longueurs et les contraintes appliqués à chaque colonne. L’évaluation de la structure des données vous aide à comprendre comment les données sont organisées et comment elles sont liées à d’autres éléments de données.
Analysez le volume de données. Évaluez le volume de vos données pour comprendre la taille globale et les modèles de croissance. Déterminez le nombre d’enregistrements ou de documents et la taille des tables ou collections individuelles. Ces informations vous aident à estimer les besoins de stockage et à identifier les problèmes d’extensibilité.
Identifiez les relations de données. Explorez les relations entre les éléments de données, tels que les relations de clé primaire et étrangère. Découvrez comment les données sont connectées. Vous pouvez donc déterminer la façon dont les modifications d’une table ou d’un document peuvent affecter les données associées.
Évaluer la qualité des données. Évaluez la qualité de vos données en examinant des facteurs tels que l’exhaustivité, la précision, la cohérence et l’unicité. Identifiez les anomalies de données, les valeurs manquantes ou les enregistrements en double susceptibles d’affecter l’intégrité des données et les performances des requêtes. Cette étape vous aide à identifier les zones de nettoyage et d’amélioration des données.
Capturez la distribution des données. Analysez la distribution des valeurs dans chaque colonne pour déterminer les modèles de données. Identifiez les valeurs fréquentes et rares, les valeurs hors norme et les asymétries de données. Pour optimiser les performances des requêtes, choisissez les stratégies d’indexation appropriées et les techniques d’optimisation des requêtes en fonction de la distribution.
Surveiller les performances des données
La surveillance des performances des données est la pratique consistant à suivre de manière cohérente l’efficacité des magasins de données, des partitions et des index en temps réel. Elle implique la collecte et l’analyse des métriques de performances spécifiques aux opérations de données, à l’aide d’outils adaptés au niveau du système, spécifiques à la base de données ou à des solutions de supervision tierces. Une surveillance efficace des performances des données vous permet d’identifier et d’atténuer de manière proactive les goulots d’étranglement potentiels, en veillant à ce que les processus et tâches liés aux données soient efficaces. Pour surveiller les performances des données, tenez compte des stratégies suivantes :
Collecter des métriques spécifiques aux données. Rassemblez les métriques clés qui sont directement liées aux performances des données. Ces métriques incluent les temps de réponse des requêtes, le débit des données, les E/S de disque liées à l’accès aux données et les temps de chargement de partitions de données spécifiques.
Configurer des alertes de données. Configurez des alertes spécifiquement pour les métriques de données. Utilisez des seuils prédéfinis ou des anomalies dans ces métriques pour déclencher des alertes. Les alertes vous permettent de recevoir des notifications lorsque les métriques de performances dépassent des plages acceptables ou affichent un comportement anormal. Par exemple, si une requête de base de données prend plus de temps que prévu ou si le débit des données diminue considérablement, il déclenche une alerte. Vous pouvez configurer ces alertes à l’aide d’outils de surveillance spécialisés ou de scripts personnalisés.
Diagnostiquer les problèmes de performances des données. Passez régulièrement en revue les métriques de données collectées pour identifier les goulots d’étranglement potentiels des performances ou la dégradation des opérations de données. Les outils de visualisation ou les tableaux de bord peuvent être précieux dans ce processus, ce qui permet de mettre en évidence les tendances, les goulots d’étranglement et les valeurs hors norme dans les performances des données. Une fois identifiés, explorez les causes profondes de ces problèmes et stratégez les étapes de correction appropriées.
Données de partition
Le partitionnement implique de diviser des jeux de données volumineux ou des charges de travail à volume élevé en sous-ensembles plus petits et gérables. Le partitionnement améliore l’efficacité des performances des données en distribuant la charge de travail et en améliorant le traitement parallèle. Il garantit également un accès aux données plus efficace en fonction des besoins spécifiques et des modèles de requête. Vous pouvez partitionner des données verticalement ou horizontalement (également appelée partitionnement).
| Stratégie | Definition | Example | Cas d’utilisation |
|---|---|---|---|
| Partitionnement vertical | Divisez une table en tables plus petites en sélectionnant des colonnes ou des champs spécifiques pour chaque partition. Chaque partition représente un sous-ensemble des données complètes. | Si vous avez une table avec des colonnes A, B, C et D, vous pouvez créer une table avec des colonnes A et B et une autre avec des colonnes C et D. | - Une table contient de nombreuses colonnes, mais les requêtes n’accèdent pas à toutes les colonnes ensemble. - Certaines colonnes sont plus volumineuses que d’autres et les séparent peuvent améliorer les performances des E/S. - Différentes parties de données ont différents modèles d’accès. |
| Partitionnement horizontal | Fractionnez les données en fonction de lignes ou de plages de valeurs (également appelées partitionnement). Chaque partition contient un sous-ensemble de lignes présentant des caractéristiques similaires. | Si vous avez une table avec des lignes 1 à 1 000, vous pouvez créer une partition avec des lignes 1 à 500 et une autre avec des lignes 501 à 1000. | - Un jeu de données est trop volumineux pour un emplacement ou un serveur unique. - Les données sont accessibles en fonction de plages ou de filtres spécifiques. - Vous devez distribuer la charge de travail entre des nœuds physiques ou des serveurs pour améliorer les performances. |
Pour partitionner vos données, procédez comme suit :
Analysez les données et les requêtes. Analysez les données et les modèles de requête pour identifier les stratégies de partitionnement ou de partitionnement appropriées. Comprendre la nature des données, des modèles d’accès et des exigences de distribution.
Déterminez une clé. Choisissez une clé de partitionnement ou de partitionnement pour distribuer des données entre des partitions ou des partitions. Sélectionnez soigneusement la clé en fonction des caractéristiques des données et des exigences de requête.
Déterminez la logique. Déterminez une logique de partitionnement ou de partitionnement basée sur la clé choisie. Envisagez de diviser les données en plages, d’appliquer des algorithmes de hachage ou d’utiliser d’autres techniques de partitionnement.
Configurez l’infrastructure. Configurez le système de base de données pour prendre en charge le partitionnement ou le partitionnement. Envisagez de créer l’infrastructure nécessaire, de définir les partitions ou les partitions et de configurer la distribution des données.
Pour plus d’informations, consultez les instructions de partitionnement des données.
Optimiser les requêtes de base de données
L’optimisation des requêtes de base de données affine les requêtes à l’aide de techniques telles que les indicateurs d’index et la mise en cache. Ces ajustements augmentent l’efficacité et la vitesse de récupération des données. Par conséquent, la base de données a une charge de travail plus légère, les ressources fonctionnent plus efficacement et les utilisateurs bénéficient d’interactions plus lisses. Pour optimiser les requêtes de base de données, tenez compte des stratégies suivantes :
Réécrire des requêtes. Passez en revue et analysez des requêtes complexes pour identifier les opportunités de les réécrire. Envisagez de restructurer la logique de requête, d’éliminer les opérations redondantes ou de simplifier la syntaxe des requêtes.
Évitez le problème de requête N+1. Réduisez le nombre d’allers-retours vers la base de données à l’aide de jointures et d’extraction par lots pour récupérer efficacement les données associées.
Réorganiser les jointures. Évaluez le plan de requête et envisagez de réorganiser l’ordre de jointure pour réduire le nombre de lignes de chaque opération de jointure. L’ordre dans lequel vous joignez des tables peut affecter les performances des requêtes.
Utilisez des indicateurs d’index. Utilisez des indicateurs d’index pour qu’un moteur de base de données puisse spécifier l’utilisation d’index lorsqu’il exécute une requête. Les indicateurs d’index guident l’optimiseur pour sélectionner les index les plus appropriés.
Requêtes de cache. Stockez les résultats des requêtes fréquemment exécutées en mémoire. La mise en cache des requêtes élimine la nécessité d’exécuter à plusieurs reprises la même requête et réduit la surcharge de traitement des requêtes.
Optimiser le verrouillage. Évitez les indicateurs de verrou inutiles ou restrictifs dans les requêtes. Des stratégies de verrouillage efficaces peuvent améliorer les performances des requêtes et la concurrence. Appliquez des mécanismes de verrouillage optimisés fournis par le système de base de données. Analysez et ajustez les niveaux d’isolation pour équilibrer la cohérence des données et les performances des requêtes.
Surveillez et réglez. Surveillez les métriques de performances des requêtes, telles que le runtime, l’utilisation des ressources et le débit des requêtes. Utilisez les outils de profilage de base de données et les fonctionnalités de surveillance pour identifier les requêtes mal performantes. Évaluez et ajustez les plans de requête en fonction des données de performances collectées. Analysez les plans de requête et les statistiques d’attente pour identifier les goulots d’étranglement. Utilisez ces informations pour optimiser les performances des requêtes.
Optimiser les performances des index
Les index améliorent la vitesse de récupération des données en permettant aux bases de données de trouver rapidement des données à l’aide de colonnes ou de champs spécifiques. Lorsque vous optimisez ces index, les opérations de tri et de jointure deviennent plus efficaces, ce qui entraîne des requêtes plus rapides. Les index optimisés sont réduits sur les opérations d’E/S de disque requises pour les requêtes. La suppression d’index inutiles ou redondants libère également un espace de stockage précieux. Pour optimiser les performances des index, tenez compte des stratégies suivantes :
Analyser les modèles de requête. Comprendre les modèles de requête qui s’exécutent sur votre base de données. Identifiez les requêtes qui s’exécutent fréquemment et peuvent dégrader les performances. Analysez les modèles de requête pour déterminer quels index sont bénéfiques pour optimiser les performances.
Évaluez les index existants. Passez en revue les index existants dans votre base de données. Évaluez leur utilisation, leurs effets de performances et leur pertinence pour les modèles de requête. Identifiez les index redondants ou inutilisés que vous pouvez supprimer pour améliorer les performances d’écriture et réduire la surcharge de stockage.
Identifiez les colonnes pour l’indexation. Identifiez les colonnes fréquemment utilisées dans les clauses where, join et order by de vos requêtes. Ces colonnes sont des candidats potentiels à l’indexation, car elles peuvent permettre une récupération rapide des données.
Choisissez un type d’index approprié. Sélectionnez un type d’index approprié en fonction de votre système de base de données. Les options courantes incluent les index b-tree pour les requêtes d’égalité et de plage, les index de hachage pour les requêtes de correspondance exacte et les index de recherche en texte intégral pour les opérations de recherche de texte. Choisissez un type d’index qui correspond le mieux à vos besoins en matière de requête.
Considérez l’ordre des colonnes d’index. Lorsque vous créez des index composites ou des index avec plusieurs colonnes, tenez compte de l’ordre des colonnes. Placez les colonnes les plus fréquemment utilisées dans les requêtes au début de l’index. L’ordre des colonnes permet de s’assurer que votre charge de travail utilise efficacement des index pour un large éventail de requêtes.
Équilibrer la taille de l’index. Évitez de créer des index sur des colonnes avec une cardinalité faible ou des colonnes qui ont un faible nombre de valeurs distinctes. Ces index peuvent être inefficaces et augmenter la taille de votre base de données. Au lieu de cela, les colonnes d’index qui ont une sélectivité élevée.
Conservez l’utilisation des index. Surveillez en permanence l’utilisation et les performances de vos index. Recherchez des opportunités de création d’index ou de modification d’index existants en fonction des modifications apportées aux modèles de requête ou aux exigences de performances. Supprimez ou mettez à jour des index qui ne sont plus bénéfiques. Les index ont une surcharge de maintenance. À mesure que les données changent, les index peuvent fragmenter et affecter les performances. Effectuez régulièrement des tâches de maintenance d’index, telles que la reconstruction ou la réorganisation d’index, pour garantir des performances optimales.
Testez et validez. Avant de réviser les index dans un environnement de production, effectuez des tests et une validation approfondis. Mesurez l’effet de performances des révisions d’index à l’aide de charges de travail représentatives. Vérifiez les améliorations apportées aux benchmarks prédéfinis.
Compromis : les index B-tree peuvent avoir une surcharge de stockage élevée et les requêtes de correspondance exacte peuvent être lentes. Les index de hachage ne conviennent pas aux requêtes de plage ou aux opérateurs de comparaison. Les index de recherche en texte intégral peuvent avoir des exigences de stockage élevées et les requêtes de données non textuelles peuvent être lentes.
Prendre en compte la compression des données
La compression des données est le processus de réduction de la taille des données pour optimiser l’espace de stockage et améliorer l’efficacité des performances de la charge de travail. Les données compressées nécessitent moins d’espace de stockage et moins de bande passante pour la transmission, ce qui entraîne un transfert de données rapide. Vous compressez les données pour réduire votre empreinte de stockage et améliorer les temps d’accès aux données. Lorsque vous compressez des données, cela réduit les opérations d’E/S et les besoins en bande passante réseau.
La compression sans perte et la compression de perte sont des algorithmes de compression de données. Les algorithmes de compression sans perte réduisent la taille des données sans perdre d’informations. Les algorithmes de compression de perte obtiennent des ratios de compression élevés en supprimant des informations moins importantes ou redondantes.
Compromis : Pour compresser et décompresser les données, vous avez besoin de ressources de calcul, telles que le processeur et la mémoire. Plus vous compressez de données, plus vous avez besoin de ressources.
Archiver et vider les données
L’archivage et la purge sont des stratégies qui simplifient le stockage des données. L’archivage déplace les données plus anciennes et moins fréquemment sollicitées vers un stockage plus économique. Le purge des données supprime définitivement les données redondantes. Ils contribuent à l’efficacité des performances en réduisant le volume de données, en augmentant la vitesse d’accès aux données et en réduisant les temps de sauvegarde et de récupération :
Réduction du volume de données : moins de données signifie des temps de traitement plus rapides, ce qui garantit des réponses rapides aux demandes des utilisateurs.
Augmentation de la vitesse d’accès aux données : un jeu de données réduit permet d’accélérer les requêtes et la récupération des données, d’optimiser la réactivité du système.
Réduction des temps de sauvegarde et de récupération : les jeux de données plus petits accélèrent les processus de sauvegarde et de restauration, réduisent les temps d’arrêt et garantissent des performances cohérentes.
L’archivage et la purge sont essentiels à la maintenance de l’efficacité maximale des performances dans les systèmes pilotés par les données.
Optimiser la charge de stockage
L’optimisation de la charge de stockage signifie simplifier les demandes adressées au système de stockage. Il permet d’éliminer les demandes inutiles. Il améliore également la récupération des données et empêche l’accablant le stockage. L’optimisation de la charge de stockage garantit que le système de stockage reste réactif aux demandes légitimes et maintient les performances maximales. Implémentez des stratégies pour réduire la charge de traitement sur le magasin de données. Pour optimiser la charge du magasin de données, tenez compte des stratégies suivantes :
Utiliser la mise en cache
La mise en cache stocke les données couramment consultées dans une zone de stockage à accès rapide, ce qui rend la récupération des données plus rapide que l’extraction à partir de la source principale. Cette technique améliore les performances des données en réduisant les temps d’accès et en évitant les récupérations de données répétitives. La mise en cache améliore les vitesses de lecture et les temps de réponse des utilisateurs, en particulier pour les données fréquemment sollicitées, cette méthode est la plus efficace sur les données statiques ou les données qui changent rarement.
Pour garantir une efficacité optimale de la mise en cache, tenez compte des facteurs tels que les stratégies d’expiration, les stratégies d’éviction et la gestion de la taille du cache. Ajustez les paramètres, tels que la durée de vie (TTL), pour des performances optimales. Pour utiliser un cache pour optimiser la charge de stockage, tenez compte des stratégies suivantes :
Mise en cache en mémoire : effectuez une mise en cache en mémoire pour stocker les données fréquemment sollicitées en mémoire pour une récupération rapide. Vous pouvez utiliser cette technique pour les données d’application coûteuses à calculer ou à récupérer à partir d’une base de données. La mise en cache en mémoire est utile pour les données que vous lisez fréquemment, mais ne changent pas fréquemment.
Mise en cache des requêtes de base de données : utilisez cette technique pour mettre en cache les résultats des requêtes de base de données pour éviter d’exécuter la même requête plusieurs fois. La mise en cache des requêtes de base de données est utile pour les requêtes de base de données complexes et fastidieuses. Lorsque vous mettez en cache les résultats d’une requête, les requêtes suivantes pour la même requête sont retournées rapidement.
Mise en cache du réseau de distribution de contenu : utilisez cette technique pour mettre en cache du contenu web sur des serveurs réseau distribués afin de réduire la latence et d’améliorer la distribution de contenu. La mise en cache du réseau de distribution de contenu est efficace pour le contenu statique, comme les images, les fichiers CSS et les fichiers JavaScript. Les réseaux de distribution de contenu stockent des copies de contenu dans plusieurs emplacements dans le monde entier, afin que les utilisateurs puissent accéder au contenu à partir d’un serveur qui les entoure géographiquement.
Utiliser des réplicas en lecture
De nombreuses bases de données prennent en charge plusieurs réplicas en lecture. Distribuez les requêtes de lecture entre les réplicas pour réduire la demande sur la base de données d’écriture. Chaque réplica en lecture peut servir un sous-ensemble de trafic, ce qui peut améliorer les performances.
Lorsque vous disposez d’une charge de travail avec plusieurs réplicas de données que vous prévoyez de rester synchronisé, il est utile de modéliser ce système distribué à l’aide du théorème PACELC. Le théorème PACELC vous aide à comprendre la latence et les choix de compromis de constance dans l’état non partitionné du système. Utilisez ces informations pour vous aider à choisir un moteur de base de données et une stratégie de synchronisation des données qui traite le mieux le système dans un état partitionné et non partitionné. Pour plus d’informations, consultez le modèle CQRS (Command and Query Responsibility Segregation).
Optimiser la cohérence des données
Dans une charge de travail distribuée, où les données résident sur plusieurs nœuds ou emplacements, le niveau de cohérence que vous sélectionnez détermine la vitesse à laquelle les modifications d’un emplacement se reflètent dans d’autres. Opter pour une cohérence plus stricte consomme davantage de ressources de calcul et peut affecter négativement l’efficacité des performances. En revanche, un niveau de cohérence moins strict, comme la cohérence éventuelle introduit des incohérences temporaires entre les nœuds, mais peut améliorer l’efficacité des performances.
La cohérence éventuelle atteint un équilibre entre la précision des données et les performances de la charge de travail. Les modifications se répartissent progressivement au lieu d’augmenter instantanément la réactivité de la charge de travail et la vitesse de traitement des données. Bien qu’elle introduit des incohérences de courte durée, la charge de travail présente finalement des données cohérentes sur tous les nœuds. Le choix de la cohérence éventuelle peut élever les performances d’une charge de travail et améliorer sa disponibilité et sa scalabilité.
Optimiser les mises à jour des données
Vous pouvez utiliser l’accès concurrentiel optimiste pour gérer les mises à jour simultanées des mêmes données. Au lieu de verrouiller des données et d’empêcher d’autres mises à jour, l’accès concurrentiel optimiste permet à plusieurs utilisateurs ou processus de fonctionner simultanément et suppose que les conflits sont rares.
Avec l’accès concurrentiel optimiste, chaque opération de mise à jour inclut une version ou un horodatage qui représente l’état des données au moment de la mise à jour. Lorsqu’une mise à jour en conflit est détectée, le système résout le conflit en rejetant la mise à jour ou en fusionnant les modifications.
L’accès concurrentiel optimiste réduit la contention et permet aux mises à jour simultanées de continuer sans verrouillage inutile. Elle réduit le temps d’attente des ressources et fournit un débit élevé.
Optimiser le déplacement et le traitement des données
L’optimisation du déplacement et du traitement des données implique d’améliorer l’efficacité et les performances des opérations liées à l’extraction, à la transformation, au chargement et au traitement des données. Tenez compte des aspects clés suivants de l’optimisation du déplacement et du traitement des données :
Optimisation de l’extraction, de la transformation et de la charge (ETL) : optimisez les processus ETL pour réduire le temps de traitement. Vous pouvez simplifier le processus d’extraction, implémenter des algorithmes de transformation efficaces et optimiser le processus de chargement. Lorsque vous rendez chaque étape efficace, vous pouvez optimiser le flux de travail global.
Traitement parallèle : utilisez des techniques de traitement parallèle pour améliorer les performances. Lorsque vous distribuez des tâches de traitement des données sur plusieurs threads ou nœuds, vous pouvez diviser et traiter la charge de travail simultanément, ce qui entraîne un traitement rapide.
Traitement par lots : regroupez des tâches similaires pour réduire la surcharge causée par des opérations répétées. Traitez plusieurs tâches dans un lot pour réduire le temps de traitement global.
Optimiser la conception du stockage
L’optimisation de la conception du stockage implique l’élaboration d’une architecture de stockage de données précise et la sélection des technologies de stockage appropriées. Une conception de stockage simplifiée améliore l’accès aux données, la récupération et la manipulation. Grâce à la conception de stockage stratégique, une charge de travail améliore les temps de réponse et les fonctionnalités globales.
Conception pour la proximité des données
La proximité des données fait référence à l’emplacement stratégique des données plus proche des utilisateurs ou des services qui y accèdent le plus fréquemment. En réduisant la distance physique ou logique entre les données et ses utilisateurs, la proximité des données garantit un accès plus rapide aux données et une réactivité améliorée. Pour optimiser la conception pour une proximité étroite, tenez compte des stratégies suivantes :
Évaluer les modèles d’accès aux données : évaluez les modèles d’accès de votre charge de travail et les données fréquemment consultées. Cette analyse peut vous aider à déterminer où placer des données pour bénéficier au maximum.
Choisissez des solutions qui prennent en charge la réaffectation des données : envisagez des solutions qui offrent une réaffectation dynamique des données en fonction de la modification des modèles d’accès, ce qui garantit un positionnement optimal des données.
Choisissez des solutions qui prennent en charge la synchronisation des données : si vous répondez à une base d’utilisateurs distribuée, optez pour des solutions qui facilitent la synchronisation des données entre différentes régions, ce qui garantit que les réplicas de données sont disponibles à proximité des utilisateurs.
Compromis : si les données sous-jacentes changent fréquemment, implémentez un mécanisme d’invalidation du cache pour vous assurer que les données mises en cache restent à jour.
Utiliser la persistance polyglotte
La persistance polyglotte est la pratique d’utiliser plusieurs technologies de stockage de données pour stocker et gérer différents types de données au sein d’une application ou d’un système. Différents types de bases de données ou de solutions de stockage répondent à différentes exigences en matière de données.
La persistance polyglotte tire parti des avantages de chaque technologie de stockage de données pour garantir des performances et une scalabilité optimales pour chaque type de données. Par exemple, vous pouvez utiliser une base de données relationnelle pour stocker des données transactionnelles structurées. Vous pouvez également utiliser une base de données NoSQL pour stocker des données non structurées ou semi-structurées.
Concevez un schéma pour chaque technologie de stockage de données en fonction des exigences des données. Pour les bases de données relationnelles, vous pouvez créer des tables normalisées avec des relations appropriées. Pour les bases de données NoSQL, vous pouvez définir des structures de document ou des paires clé-valeur. Développez les composants nécessaires pour interagir avec chaque technologie de stockage de données, comme les API, les couches d’accès aux données ou les pipelines d’intégration de données. Vérifiez que l’application peut lire et écrire des données dans les magasins de données appropriés.
Compromis : une structure de données qui a une normalisation faible peut améliorer les performances, mais introduire des complexités.
Séparer les systèmes OLTP et OLAP
Pour séparer les systèmes OLTP et OLAP , concevez et déployez des systèmes distincts pour les tâches de traitement transactionnel et de traitement analytique. Cette séparation vous permet d’optimiser chaque système pour sa charge de travail et ses caractéristiques spécifiques.
Les systèmes OLTP sont utilisés pour le traitement transactionnel en temps réel. Ils gèrent efficacement et de manière fiable des transactions individuelles. Les systèmes OLTP sont généralement utilisés pour effectuer des tâches opérationnelles quotidiennes, telles que le traitement des commandes en ligne, la gestion des stocks et la gestion des données client. Les systèmes OLTP hiérarchisent la réactivité, la cohérence et la concurrence.
Les systèmes OLAP sont utilisés pour le traitement et les rapports analytiques complexes. Ils gèrent de grands volumes de données et effectuent des calculs et des agrégations gourmands. Les systèmes OLAP sont utilisés pour des tâches telles que l’intelligence décisionnelle, l’exploration de données et le support décisionnel. Les systèmes OLAP hiérarchisent les performances des requêtes, l’agrégation des données et l’analyse multidimensionnelle.
Lorsque vous séparez les systèmes OLTP et OLAP, vous pouvez allouer des ressources appropriées et optimiser chaque système pour sa charge de travail spécifique. La séparation vous permet d’appliquer différentes techniques de modélisation des données à chaque système. Les systèmes OLTP utilisent généralement des schémas normalisés pour un traitement transactionnel efficace. Les systèmes OLAP peuvent utiliser des schémas dénormalisés ou des techniques d’entreposage de données pour optimiser les performances des requêtes.
Facilitation Azure
Données de profilage : Azure offre des outils et des services que vous pouvez utiliser pour profiler des données, telles qu’Azure Data Catalog, Azure Purview et Azure Synapse Analytics. Ces outils vous permettent d’extraire, de transformer et de charger des données à partir de différentes sources, d’effectuer des vérifications de qualité des données et d’obtenir des insights sur les données.
Supervision des performances des données : pour surveiller les performances des données, vous pouvez utiliser Azure Monitor pour collecter et analyser les métriques d’infrastructure, les journaux et les données d’application. Vous pouvez intégrer Monitor à d’autres services comme Application Insights. Application Insights fournit une surveillance des performances des applications et prend en charge de nombreuses plateformes.
Application Insights collecte les données d’utilisation et de performances. Vous pouvez utiliser Log Analytics pour mettre en corrélation ces données avec les données de configuration et de performances entre les ressources Azure.
Vous pouvez utiliser la fonctionnalité Insights d’Azure SQL et d’Azure Cosmos DB pour surveiller votre base de données. Cette fonctionnalité vous permet de diagnostiquer et de régler les problèmes de performances de la base de données.
Partitionnement des données : Azure propose différentes stratégies de partitionnement pour différents magasins de données. Chaque magasin de données peut avoir des considérations et des options de configuration différentes pour le partitionnement des données. Pour plus d’informations, consultez stratégies de partitionnement des données.
Optimisation des requêtes de base de données et des performances d’index : utilisez la fonctionnalité d’insights sur les performances des requêtes d’Azure SQL Database pour optimiser les requêtes, les tables et les bases de données. Vous pouvez utiliser cette fonctionnalité pour identifier et résoudre les problèmes de performances des requêtes.
Pour les bases de données relationnelles, vous devez suivre les instructions de conception d’index, les instructions d’index SQL Server et les instructions d’index Azure Cosmos DB. Utilisez SQL Database pour effectuer un réglage automatique pour les requêtes afin d’améliorer leurs performances.
Dans les bases de données SQL, vous devez réorganiser ou reconstruire régulièrement des index. Identifiez les requêtes lentes et réglez-les pour améliorer les performances. De nombreux moteurs de base de données ont des fonctionnalités d’optimisation des requêtes. Pour plus d’informations, consultez Les meilleures pratiques pour les performances des requêtes.
Azure Cosmos DB a une stratégie d’indexation par défaut qui indexe chaque propriété de chaque élément et applique des index de plage pour n’importe quelle chaîne ou nombre. Cette stratégie vous offre des performances de requête efficaces et vous n’avez pas besoin de gérer les index à l’avance.
Optimisation de la charge de stockage : de nombreux services de base de données Azure prennent en charge les réplicas en lecture. La disponibilité et la configuration des réplicas en lecture varient en fonction du service de base de données Azure. Reportez-vous à la documentation officielle de chaque service pour comprendre les détails et les options.
Optimisation de la conception du stockage : Azure offre de nombreux magasins de données différents pour répondre aux besoins de votre charge de travail. Comprendre les types de magasins de données et sélectionner un magasin de données Azure pour votre application.
Liens connexes
- Réglage automatique dans SQL Database
- Azure Cosmos DB
- Conseils sur l’index Azure Cosmos DB
- Azure SQL
- Meilleures pratiques pour les performances des requêtes
- Modèle CQRS
- Conseils de partitionnement des données
- Stratégies de partitionnement des données
- Stratégie d’indexation par défaut
- Conseils en matière de conception d’index
- Vue d’ensemble d’OLAP
- Vue d’ensemble d’OLTP
- Meilleures pratiques de partitionnement
- Réorganiser ou reconstruire des index
- Sélectionner un magasin de données Azure pour votre application
- Conseils sur l’index SQL Server
- Comprendre les types de magasin de données
Liste de contrôle d’efficacité des performances
Reportez-vous à l’ensemble complet de recommandations.