Share via


Recommandations pour optimiser les performances des données

S’applique à cette recommandation de liste de vérification de l’efficacité des performances d’Azure Well-Architected Framework :

PE :08 Optimiser 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, transaction ou calcul de charge de travail repose 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 sans problème. Les performances des données compromises créent un effet domino d’une faible efficacité 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. Cela met en péril l’efficacité de l’ensemble de la charge de travail.

Définitions

Terme Définition
Théorème CAP Framework utilisé pour prendre en compte la cohérence, la disponibilité et la tolérance de partition afin d’expliquer les compromis en matière de cohérence des données.
Reconstruction de l’index de base de données Activité de maintenance qui supprime et recrée un index.
Réorganisation de l’index de base de données Activité de maintenance qui optimise l’index de base de données actuel.
Banque 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 des données qui permet une incohérence temporaire dans les réplicas de données avant leur synchronisation.
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 bases de données métier volumineuses, prend en charge l’analyse complexe et effectue des requêtes analytiques complexes sans affecter négativement les systèmes transactionnels.
Traitement transactionnel en ligne (OLTP) Technologie qui enregistre les interactions commerciales au fur et à mesure qu’elles se produisent dans les opérations quotidiennes d’un organization.
Accès concurrentiel optimiste Approche de mise à jour des bases de données qui utilise des instantanés pour effectuer des mises à jour au lieu des mécanismes de verrouillage traditionnels, ce qui améliore les performances et la scalabilité.
Théorème PACELC Framework utilisé pour prendre en compte la tolérance de partition, la disponibilité, la cohérence et la latence afin d’expliquer les compromis dans la cohérence des données.
Partitionnement 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.
Lire réplica Copie dynamique d’une base de données primaire qui vous permet de décharger le trafic de lecture d’une base de données en écriture.

Stratégies de conception

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 est bien adapté à votre charge de travail. Tenez compte de 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.

  • Ajustez votre configuration de stockage de données. Configurez votre infrastructure de stockage de données pour qu’elle s’aligne sur vos exigences de 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 des plans de requête et des outils d’analyse des performances, puis apportez les améliorations nécessaires.

  • Surveillez et réglez régulièrement le système. Surveillez en continu 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 à leur 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 des problèmes tels que des valeurs manquantes, des doublons, des formats incohérents et d’autres anomalies. Pour un profilage des données efficace, envisagez les stratégies suivantes :

  • Comprendre la structure des données. Examinez la structure de vos données, notamment 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 permettent d’estimer les besoins en stockage et d’identifier les problèmes d’extensibilité.

  • Identifier les relations de données. Explorez les relations entre les éléments de données, telles que les relations de clé primaire et de clé étrangère. Découvrez comment les données sont connectées afin de déterminer comment 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 au sein de 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 des données. Pour optimiser les performances des requêtes, choisissez les stratégies d’indexation et les techniques d’optimisation des requêtes appropriées en fonction de la distribution.

Superviser les performances des données

La surveillance des performances des données consiste à 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 aux solutions de supervision au niveau du système, spécifiques à la base de données ou 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, garantissant ainsi l’efficacité des processus et tâches liés aux données. Pour surveiller les performances des données, envisagez les 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.

  • Configurez des alertes de données. Configurez des alertes spécifiquement pour les métriques de données. Utilisez des seuils ou des anomalies prédéfinis 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 instance, 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, une alerte est déclenchée. Vous pouvez configurer ces alertes à l’aide d’outils de supervision 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 éventuels goulots d’étranglement ou dégradation des performances dans les 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 aberrantes en matière de performances des données. Une fois identifiés, examinez les causes profondes de ces problèmes et élaborez des stratégies de correction appropriées.

Données de partition

Le partitionnement implique la division de jeux de données volumineux ou de 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 répartissant 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 de besoins spécifiques et de modèles de requête. Vous pouvez partitionner des données verticalement ou horizontalement (également appelée partitionnement).

Stratégie Définition Exemple 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 les colonnes A, B, C et D, vous pouvez créer une table avec les colonnes A et B et une autre avec les 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 grandes que d’autres et leur séparation peut améliorer les performances d’E/S.
- Les 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ée partitionnement). Chaque partition contient un sous-ensemble de lignes avec des caractéristiques similaires. Si vous avez une table avec des lignes 1 à 1000, vous pouvez créer une partition avec les lignes 1 à 500 et une autre avec les lignes 501 à 1000. - Un jeu de données est trop volumineux pour un seul emplacement ou serveur.
- Les données sont accessibles en fonction de plages ou de filtres spécifiques.
- Vous devez répartir 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 modèles de données et 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 les 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éterminer la logique. Déterminez une logique de partitionnement ou de partitionnement en fonction de 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 partitions et de configurer la distribution des données.

Pour plus d’informations, consultez la page Recommandations en matière de partitionnement.

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 fluides. 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 les requêtes complexes pour identifier les opportunités de réécriture. Envisagez de restructurer la logique de requête, d’éliminer les opérations redondantes ou de simplifier la syntaxe de requête.

  • Évitez le problème de requête N+1. Réduisez le nombre d’allers-retours vers la base de données à l’aide des jointures et de l’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 dans 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 afin 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.

  • Mettre en cache les requêtes. 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 verrouillage inutiles ou restrictifs dans les requêtes. Des stratégies de verrouillage efficaces peuvent améliorer les performances et la concurrence des requêtes. Appliquez les 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.

  • Surveiller et régler. 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 des outils de profilage de base de données et des fonctionnalités de surveillance pour identifier les requêtes peu 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 accélère les requêtes. Les index bien optimisés réduisent les opérations d’E/S de disque requises pour les requêtes. La suppression des index inutiles ou redondants libère également un espace de stockage précieux. Pour optimiser les performances de l’index, envisagez les stratégies suivantes :

  • Analysez 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 qui peuvent dégrader les performances. Analysez les modèles de requête pour déterminer quels index sont utiles 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 sur les performances et leur pertinence par rapport aux 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 pour 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 texte intégral pour les opérations de recherche de texte. Choisissez un type d’index qui correspond le mieux à vos exigences de requête.

  • Tenez compte de 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 garantir que votre charge de travail utilise efficacement des index pour un large éventail de requêtes.

  • Équilibrez la taille de l’index. Évitez de créer des index sur des colonnes à faible cardinalité ou des colonnes qui ont un faible nombre de valeurs distinctes. De tels index peuvent être inefficaces et augmenter la taille de votre base de données. Au lieu de cela, indexez les colonnes qui ont une sélectivité élevée.

  • Maintenir l’utilisation de l’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 utiles. 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 des 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 sur les performances des révisions d’index à l’aide de charges de travail représentatives. Vérifiez les améliorations par rapport 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 texte intégral peuvent avoir des exigences de stockage élevées et les requêtes de données non textuelles peuvent être lentes.

Envisager 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 des charges de travail. Les données compressées nécessitent moins d’espace de stockage et moins de bande passante pour la transmission, ce qui se traduit par 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 avec 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 avec perte permettent d’obtenir des taux de compression élevés en supprimant les informations moins importantes ou redondantes.

Compromis : pour compresser et décompresser des données, vous avez besoin de ressources de calcul, comme 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 le vidage sont des stratégies qui simplifient le stockage des données. L’archivage déplace des données plus anciennes et moins fréquemment consultées vers un stockage plus économique. La 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 permet d’accélérer les temps de traitement, 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 rogné permet d’accélérer les requêtes et la récupération des données, ce qui optimise 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 le vidage jouent un rôle essentiel dans le maintien d’une 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 rationaliser 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 évite d’surcharger 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 main. Cette technique améliore les performances des données en réduisant les temps d’accès et en évitant les extractions 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 consultées Cette méthode est 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 de 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 afin d’optimiser la charge de stockage, envisagez les stratégies suivantes :

  • Mise en cache en mémoire : effectuez une mise en cache en mémoire pour stocker les données fréquemment consultées en mémoire pour une récupération rapide. Vous pouvez utiliser cette technique pour les données d’application qui sont 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 que vous ne changez 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 afin d’é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 demandes suivantes pour la même requête sont retournées rapidement.

  • Mise en cache 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 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 se trouve à proximité 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 de lecture peut servir un sous-ensemble de trafic, ce qui peut améliorer les performances.

Lorsque vous avez 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 les choix de compromis entre latence et 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 nonpartitionné. Pour plus d’informations, consultez 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 rapidité avec laquelle les changements d’un emplacement se reflètent dans d’autres. Opter pour une cohérence plus stricte consomme plus de ressources de calcul et peut affecter négativement l’efficacité des performances. D’autre part, 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 finale trouve un équilibre entre la précision des données et les performances de la charge de travail. Les modifications se propagent progressivement plutôt que instantanément, ce qui améliore la réactivité de la charge de travail et la vitesse de traitement des données. Bien qu’elle introduise 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 d’une cohérence éventuelle peut élever les performances d’une charge de travail et améliorer davantage sa disponibilité et sa scalabilité.

Optimiser les mises à jour des données

Vous pouvez utiliser la concurrence optimiste pour gérer les mises à jour simultanées des mêmes données. Au lieu de verrouiller les données et d’empêcher d’autres mises à jour, la concurrence optimiste permet à plusieurs utilisateurs ou processus de travailler simultanément et suppose que les conflits sont rares.

Avec la concurrence 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 se poursuivre sans verrouillage inutile. Il réduit le temps d’attente des ressources et offre 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 l’amélioration de l’efficacité et des 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 du chargement (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. Une fois 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. Traiter 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 rationalisée améliore l’accès aux données, la récupération et la manipulation. Grâce à la conception du stockage stratégique, une charge de travail améliore les temps de réponse et les fonctionnalités globales.

Concevoir pour la proximité des données

La proximité des données fait référence à l’emplacement stratégique des données au plus près des utilisateurs ou services qui y accèdent le plus fréquemment. En réduisant la distance physique ou logique entre les données et leurs utilisateurs, la proximité des données garantit un accès plus rapide aux données et une meilleure réactivité. Pour optimiser la conception de proximité, envisagez les 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 les données pour un avantage maximal.

  • Choisir des solutions qui prennent en charge le déplacement des données : envisagez des solutions qui offrent un déplacement dynamique des données en fonction des modèles d’accès changeants, 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és, optez pour des solutions qui facilitent la synchronisation des données entre différentes régions, en veillant à ce que les réplicas de données soient 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 consiste à 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 solutions de stockage répondent à des besoins de données différents.

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 structurées et transactionnelles. 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 des données. Assurez-vous que l’application peut lire et écrire des données dans les magasins de données appropriés.

Compromis : une structure de données dont la normalisation est faible peut améliorer les performances, mais introduire des complexités.

Systèmes OLTP et OLAP distincts

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 les 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 donnent la priorité à la réactivité, à la cohérence et à la concurrence.

Les systèmes OLAP sont utilisés pour le traitement analytique et la création de rapports complexes. Ils gèrent de grands volumes de données et effectuent des calculs et des agrégations intensifs. Les systèmes OLAP sont utilisés pour des tâches telles que l’aide à la décision, l’exploration de données et l’aide à la décision. Les systèmes OLAP donnent la priorité aux 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 les 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

Profilage des données : Azure propose des outils et des services que vous pouvez utiliser pour profiler des données, comme 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.

Surveillance 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 des 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 dans les ressources Azure.

Vous pouvez utiliser la fonctionnalité Insights de 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 de Azure SQL Base de données 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, SQL Server d’index et les instructions d’index Azure Cosmos DB. Utilisez SQL Database pour effectuer un réglage automatique des requêtes afin d’améliorer leurs performances.

Dans les bases de données SQL, vous devez régulièrement réorganiser ou reconstruire des index. Identifiez les requêtes lentes et réglez-les pour améliorer les performances. De nombreux moteurs de base de données disposent de fonctionnalités de paramétrage des requêtes. Pour plus d’informations, consultez 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 propose de nombreux magasins de données différents pour répondre à vos besoins de charge de travail. Comprendre les types de magasins de données et sélectionner un magasin de données Azure pour votre application.

Liste de contrôle d’efficacité des performances

Reportez-vous à l’ensemble complet de recommandations.