Qu'est-ce qu'une vue matérialisée ?
Une vue matérialisée est une table de données dupliquées créée en combinant les données de plusieurs tables existantes pour une extraction plus rapide des données. Par exemple, considérez une application de vente au détail avec deux tables de base pour les données sur les clients et sur les produits. La table client contient des informations telles que le nom et les coordonnées du client, tandis que la table produits contient les informations sur les produits et leur coût. La table client enregistre uniquement les identifiants des produits qu'un client individuel achète. Vous devez croiser les deux tables pour obtenir des informations sur les produits achetés par des clients spécifiques. À la place, vous pouvez créer une vue matérialisée qui stocke les noms des clients et les informations de produits associées dans une seule table temporaire. Vous pouvez créer des structures d'index sur la vue matérialisée pour améliorer les performances de lecture des données.
Quels sont les avantages des vues matérialisées ?
Les vues matérialisées constituent une méthode rapide et efficace pour accéder aux données pertinentes. Elles contribuent à l'optimisation des requêtes dans les applications gourmandes en données. Nous passerons ensuite en revue certains des principaux avantages.
Rapidité
Les requêtes de lecture parcourent différentes tables et lignes de données pour recueillir les informations nécessaires. Les vues matérialisées vous permettent d'interroger les données directement à partir de votre nouvelle vue au lieu de devoir calculer de nouvelles informations à chaque fois. Plus votre requête est complexe, plus vous gagnerez du temps en utilisant une vue matérialisée.
Simplicité du stockage des données
Les vues matérialisées vous permettent de consolider une logique de requête complexe dans une seule table. Cela facilite les transformations de données et la maintenance du code pour les développeurs. Cela peut également aider à rendre les requêtes complexes plus faciles à gérer. Vous pouvez également utiliser le sous-ensemble de données pour réduire la quantité de données que vous devez répliquer dans la vue.
Cohérence
Les vues matérialisées fournissent une vue cohérente des données capturées à un moment précis. Vous pouvez configurer la cohérence de lecture dans les vues matérialisées et rendre les données accessibles même dans les environnements multiutilisateurs où le contrôle simultané est essentiel.
Les vues matérialisées permettent également d'accéder aux données même si les données sources sont modifiées ou supprimées. Au fil du temps, cela signifie que vous pouvez utiliser des vues matérialisées pour créer des rapports sur des instantanés de données chronologiques. Le niveau d'isolation par rapport aux tables sources garantit une plus grande cohérence entre vos données.
Contrôle d'accès amélioré
Vous pouvez utiliser une vue matérialisée pour contrôler qui a accès à des données spécifiques. Il est possible de filtrer les informations pour les utilisateurs sans leur donner accès aux tables sources. Cette approche est pratique si vous souhaitez contrôler qui a accès à quelles données et quelle quantité de données il peut consulter et avec laquelle il peut interagir.
Quels sont les cas d'utilisation des vues matérialisées ?
Vous pouvez bénéficier de vues matérialisées dans de nombreux scénarios différents.
Distribuer des données filtrées
Si vous devez distribuer des données récentes sur de nombreux sites, par exemple pour un personnel travaillant à distance, les vues matérialisées peuvent vous aider. Vous répliquez et distribuez les données sur de nombreux sites à l'aide de vues matérialisées. Les personnes qui ont besoin d'accéder aux données interagissent avec le magasin de données répliqué le plus proche géographiquement.
Ce système permet la simultanéité et réduit la charge du réseau. Il s'agit d'une approche efficace avec des bases de données en lecture seule.
Analyser les données de séries chronologiques
Les vues matérialisées fournissent des instantanés horodatés des jeux de données, ce qui vous permet de modéliser l'évolution des informations au fil du temps. Vous pouvez stocker des agrégations de données précalculées, telles que des résumés mensuels ou hebdomadaires. Ces utilisations sont utiles pour les plateformes d'informatique décisionnelle et de rapports.
Interaction de données à distance
Dans les systèmes de bases de données distribuées, vous pouvez utiliser des vues matérialisées pour optimiser les requêtes impliquant des données provenant de serveurs distants. Plutôt que de récupérer des données à plusieurs reprises à partir d'une source distante, vous pouvez les récupérer et les stocker dans une vue matérialisée locale. Cela réduit le besoin de communication réseau et améliore les performances.
Par exemple, si vous recevez des données d'une base de données externe ou via une API, une vue matérialisée les consolide et facilite leur traitement.
Traitement périodique par lots
Les vues matérialisées sont utiles dans les situations où un traitement périodique par lots est requis. Par exemple, une institution financière peut utiliser des vues matérialisées pour stocker les soldes de fin de journée et les calculs d'intérêts. Elles peuvent également stocker des résumés des performances du portefeuille, qui peuvent être actualisés à la fin de chaque jour ouvrable.
Comment fonctionnent les vues matérialisées ?
Les vues matérialisées fonctionnent en précalculant et en stockant les résultats d'une requête spécifique sous forme de table physique dans la base de données. La base de données effectue le calcul préalable à intervalles réguliers, ou les utilisateurs peuvent le déclencher en fonction d'événements spécifiques. Les administrateurs surveillent les performances et l'utilisation des ressources des vues matérialisées afin de s'assurer qu'elles continuent à atteindre leur objectif.
Voici un aperçu général du fonctionnement des vues matérialisées.
Créer une vue matérialisée
Vous définissez une requête qui extrait les données souhaitées à partir d'une ou de plusieurs tables sources pour créer des vues matérialisées. Cette requête peut inclure le filtrage, les agrégations, les jointures et d'autres opérations selon les besoins.
La base de données remplit initialement la vue matérialisée en exécutant la requête définie sur les données sources. Le résultat de la requête est enregistré sous forme de table physique dans la base de données, et cette table représente la vue matérialisée.
Mise à jour de la vue matérialisée
Les données d'une vue matérialisée doivent être mises à jour périodiquement pour refléter les modifications apportées aux données sous-jacentes dans les tables sources. La fréquence d'actualisation des données dépend du cas d'utilisation et des exigences.
Ci-après, nous expliquons quelques approches courantes pour le rafraîchissement des données.
Actualisation complète
La vue matérialisée est entièrement recalculée et remplacée par les derniers résultats de la requête. Il s'agit de l'approche la plus simple, mais elle peut être gourmande en ressources, en particulier pour les vues matérialisées de grande taille.
Actualisation incrémentielle
Seules les modifications apportées aux données sous-jacentes sont appliquées à la vue matérialisée. Cela peut être plus efficace qu'une actualisation complète lorsqu'il s'agit de grands jeux de données et de mises à jour fréquentes.
Actualisation à la demande
Certains systèmes permettent d'actualiser les vues matérialisées à la demande, en fonction d'événements spécifiques ou de demandes de l'utilisateur. Cela permet de mieux contrôler le moment où les données sont mises à jour, mais cela nécessite une gestion minutieuse pour garantir que la vue matérialisée reste à jour.
Variations techniques entre les différents systèmes
Chaque système de gestion de base de données possède des méthodes distinctes pour créer une vue matérialisée.
Système de gestion de base de données |
Fonctionnement des vues matérialisées |
PostgreSQL |
Avec PostgreSQL, vous devez actualiser manuellement la vue matérialisée, en recalculant la vue complète. Vous remplissez la vue matérialisée avec des données au moment précis où vous la créez. |
MySQL |
MySQL ne prend pas en charge les vues matérialisées. |
Oracle |
Oracle actualise automatiquement les vues matérialisées, mais vous avez également la possibilité de les actualiser à la demande. Vous pouvez également écrire une instruction SQL qui invite les vues à être actualisées avant de fournir des résultats. |
SQL Server |
SQL Server utilise le nom « vues indexées », car la matérialisation est une étape de création de l'index d'une vue normale. Vous ne pouvez exécuter des requêtes SQL de base qu'avec leurs vues indexées. Elles sont mises à jour automatiquement pour l'utilisateur. |
MongoDB |
MongoDB utilise des fonctions d’agrégation pour fournir une fonctionnalité similaire aux vues matérialisées, mais pour un environnement NoSQL. |
Quelle est la différence entre les vues et les vues matérialisées ?
Dans les bases de données relationnelles, une vue est une table temporaire créée en transformant et en combinant les données de plusieurs tables de base. Il s'agit d'une table virtuelle qui ne stocke elle-même aucune donnée. En revanche, elle est définie par une requête portant sur un ou plusieurs tables sources.
Chaque fois qu'un utilisateur interroge la vue, le moteur de base de données calcule les résultats de manière dynamique en exécutant la requête sous-jacente sur les tables sources. Les données d'une vue sont toujours à jour, car elles sont directement dérivées des tables sources chaque fois qu'on y accède.
Une vue matérialisée, quant à elle, stocke les résultats d'une requête spécifique sous forme de table physique dans la base de données. Les données de la vue matérialisée sont précalculées et stockées, ce qui signifie que les résultats sont déjà disponibles sans qu'il soit nécessaire de recalculer la requête chaque fois que l'on accède à la vue.
Cependant, les données des vues matérialisées ne sont pas toujours à jour. Vous devez configurer la fréquence de mise à jour pour trouver un équilibre entre l'actualité des données et les performances des requêtes.
Quels sont les défis posés par les vues matérialisées ?
Les vues matérialisées étant un autre composant de base de données à prendre en compte, elles ajoutent une couche de complexité supplémentaire en termes de maintenance. Vous devez trouver un équilibre entre les avantages en termes de requêtes et d'efficacité, d'une part, et les coûts de stockage potentiels et les problèmes de cohérence des données, d'autre part.
Il convient de créer des règles efficaces qui déclenchent des mises à jour afin de s'assurer que vos vues matérialisées restent bénéfiques. La mise à jour fréquente de vos vues matérialisées peut avoir un impact sur les performances du système, en particulier si vous vous trouvez déjà dans une période de pointe. En outre, les vues matérialisées occupent un espace important dans la mesure où elles répliquent les données. Si vous disposez d'une base de données volumineuse qui est constamment mise à jour, les demandes de stockage liées aux vues matérialisées seront probablement importantes.
Si vous comptez utiliser une vue matérialisée, vous devez définir des règles et des calendriers d'actualisation clairs. En outre, il est nécessaire de savoir comment gérer les incohérences de données, les échecs d'actualisation et les contraintes supplémentaires liées au stockage.
Comment les services AWS peuvent-ils vous aider à répondre à vos exigences en matière de vues matérialisées ?
Les vues matérialisées constituent un outil puissant pour améliorer les performances des requêtes dans Amazon Redshift.
Amazon Redshift surveille en permanence la charge de travail à l'aide du machine learning et crée de nouvelles vues matérialisées en cas de nécessité. Cette fonctionnalité de vues matérialisées automatisées (AutoMV) de Redshift procure les mêmes avantages en termes de performances que les vues matérialisées créées par l'utilisateur.
La fonctionnalité AutoMV offre de nombreux avantages:
- Équilibre des coûts de création et de mise à jour des vues matérialisées par rapport aux avantages escomptés en termes de latence des requêtes
- Surveillance des AutoMV créées précédemment et suppression lorsqu'ils ne sont plus utiles
- Actualisation automatique et incrémentielle, en utilisant les mêmes critères et restrictions que les vues matérialisées créées par l'utilisateur
De plus, les développeurs n'ont pas besoin de réviser les requêtes pour tirer parti d'AutoMV. La réécriture automatique des requêtes aux fins d'utilisation des vues matérialisées identifie les requêtes auxquelles les AutoMV créées par le système peuvent être bénéfiques. Elle réécrit automatiquement ces requêtes afin d'utiliser les AutoMV, améliorant l'efficacité des requêtes.
Démarrez avec les vues matérialisées sur AWS en créant un compte dès aujourd'hui.