Vues matérialisées
Qu’est-ce qu’une vue matérialisée ?
Une vue matérialisée est un objet de base de données qui stocke les résultats d’une requête (query) dans une table physique. Les vues matérialisées sont différentes des vues de base de données classiques qui sont virtuelles et tirent leurs données des tables sous-jacentes. Elles contiennent des données précalculées mises à jour de manière progressive selon un planning ou à la demande. Ce calcul préalable des données permet d’accélérer les temps de réponse des requêtes et d’améliorer les performances dans certains scénarios.
Les vues matérialisées sont très pratiques pour effectuer des requêtes ou des agrégations complexes de manière régulière et lorsque les données sous-jacentes changent peu souvent. La base de données peut accélérer les temps de réponse en stockant les résultats précalculés, évitant ainsi l’exécution répétée de requêtes complexes.
Poursuivez votre exploration
Y a-t-il une différence entre matérialisation des données et vue matérialisée ?
Bien que les termes « matérialisation des données» et « vues matérialisées » soient liés, ils font référence à des concepts différents. Avant toute chose, que signifie « matérialisé » dans ce contexte ?
La matérialisation des données consiste à stocker des données calculées sur un support physique, un disque dur par exemple. On la crée généralement à partir d'une vue virtuelle ou logique dans un objectif précis : améliorer les performances.
Dans une certaine mesure, la matérialisation des données est comparable à la mise en cache. Les deux processus impliquent de stocker les données de façon à ce qu'elles soient plus faciles à récupérer. Mais il y a une principale différence entre les deux : la mise en cache est utilisée pour stocker temporairement des données près du point d'utilisation, tandis que les données matérialisées tendent à avoir un cycle de vie plus long et un calendrier de mise à jour plus établi.
Maintenant que nous avons défini ce qu'est la matérialisation des données, nous pouvons voir en quoi elle est liée au concept de vues matérialisées.
Une vue matérialisée est un type de matérialisation de données utilisé dans les bases de données relationnelles pour stocker les résultats d'une requête et les récupérer plus rapidement.
Dans le contexte d'un data warehouse, l'utilisation de la matérialisation répond généralement à des arguments pratiques. Lorsqu'on stocke des données, le choix de la méthode découle généralement de leur format de départ. Mais si vous voulez lire ces données, ce choix pourrait être un frein au moment de l'extraction.
Par exemple, supposons que vous ayez un grand dataset dont vous devez régulièrement lire un sous-ensemble. Vous perdez du temps parce que vous devez systématiquement récupérer tout le dataset pour effectuer votre requête, alors que vous n'avez réellement besoin d'accéder qu'à une petite partie.
Dans une telle situation, la création d'une vue matérialisée serait tout à fait avantageuse. Vous la configurez de façon à ce qu'elle contienne les données que vous devez lire, puis vous définissez un calendrier de rafraîchissement pour que les données soient actualisées régulièrement ou à chaque fois que le système détecte un changement dans les données sources sous-jacentes.
Comparaison des objets de base de données : vues classiques et vues matérialisées
Prenons un moment pour définir que ce sont les « vues » et expliquer en quoi elles se distinguent des vues matérialisées. Les vues et les vues matérialisées sont des objets de base de données qui présentent des données dans un format spécifique ou le résultat d'une requête spécifique. Cependant, elles diffèrent considérablement en termes de stockage, de performance et de cas d'utilisation (comme nous le verrons plus en détail par la suite).
Lorsqu'on compare les vues aux vues matérialisées, il est essentiel de rappeler qu'une vue est une table virtuelle reposant sur le résultat d'une requête SQL. Elle ne stocke pas les données à proprement parler ; au lieu de cela, elle récupère dynamiquement les données des tables sous-jacentes chaque fois qu'on l'interroge.
À cet égard, elle est fondamentalement différente de la vue matérialisée. Pour définir le terme « matérialisé », la question du stockage est centrale. En effet, une vue matérialisée est un objet de base de données qui stocke physiquement les résultats d'une requête.
Autrement dit, contrairement à une vue classique, une vue matérialisée ne récupère pas les données de manière dynamique. Elle stocke le résultat de la requête, et elle est actualisée à intervalles réguliers pour refléter les changements survenus dans les tables sous-jacentes. C'est ce qui lui permet d'améliorer les performances des requêtes et de faire un usage plus efficace des ressources de traitement.
Si la question du stockage peut être considérée comme la principale divergence entre les vues et les vues matérialisées, cela a également des implications sur leurs fonctionnalités, comme le récapitule le tableau ci-dessous :
Fonctionnalité | Afficher |
Vue matérialisée |
---|---|---|
Stockage de données |
Ne stocke pas les données (table virtuelle) |
Stocke physiquement les données (résultats précalculés) |
Récupération de données |
Récupère les données dynamiquement à partir des tables de la base |
Récupère les données à partir des résultats stockés |
Performance |
Plus lent pour les requêtes complexes |
Plus rapide pour les requêtes complexes |
Données à jour ? |
Toujours à jour |
Potentiellement obsolètes ; actualisation nécessaire |
Espace de stockage |
Aucun stockage supplémentaire nécessaire |
Nécessite un espace de stockage supplémentaire |
Cas d'usage |
Simplification des requêtes complexes, sécurité |
Amélioration des performances, instantanés des données |
Quels sont les avantages et les inconvénients des vues matérialisées dans les bases de données ?
Si les vues matérialisées offrent plusieurs avantages, elles présentent aussi certaines limites, y compris sur la Plateforme Databricks. En comprenant dans le détail les avantages et les inconvénients de ces objets, les utilisateurs pourront déterminer quand et comment les utiliser efficacement.
Avantages des vues matérialisées
-
Amélioration des performances des requêtes
L'un des principaux objectifs de la création de vues matérialisées est l'amélioration des performances des requêtes. Elles y parviennent par deux moyens essentiels : en accélérant la récupération des données et en réduisant la charge sur les tables de la base.
Parce qu'elles stockent des résultats précalculés, elles évitent d'avoir à recalculer les données et de résoudre (ou joindre) une requête à chaque fois. Cela a pour effet d'accélérer considérablement l'exécution des requêtes, notamment pour les requêtes complexes et fortement consommatrices de ressources, ou celles très fréquemment consultées.
En stockant les données de cette manière, on réduit également le nombre de requêtes directes aux tables de la base, ce qui minimise la charge et entraîne une amélioration globale des performances de la base de données.
-
Utilisation efficace des ressources
Il n'est pas toujours souhaitable d'exécuter une requête complète chaque fois que vous avez besoin d'accéder à un dataset particulier, et cela peut même être particulièrement lent et inefficace. En précalculant et en stockant les résultats, les vues matérialisées optimisent l'utilisation des ressources, évitent les calculs et les traitements à répétition, et vous fait gagner du temps et de l'argent.
-
Création d'instantanés de données
Les vues matérialisées fournissent un instantané des données à un moment précis. C'est particulièrement utile si vous devez suivre l'évolution de votre dataset à des fins de rapports et d'analyses, et pour analyser les données historiques.
-
Consolidation des données
Si vous avez besoin de rassembler les données provenant de différentes sources, comme dans le cas d'un processus ETL, les vues matérialisées sont une excellente option. Elles peuvent agréger et consolider les données de plusieurs tables et bases de données pour fournir un moyen simple, unifié et efficace d'accéder aux données intégrées.
-
Simplification des calculs complexes
Agrégations, jointures et calculs complexes peuvent tous être précalculés et stockés dans des vues matérialisées. C'est une autre façon qu'ont les vues matérialisées de réduire les coûts de calcul et d'accélérer l'interrogation et l'analyse des données.
Limites des vues matérialisées
-
Surcharge de stockage
L'un des inconvénients des vues matérialisées est qu'elles utilisent un espace de stockage supplémentaire pour maintenir les données précalculées dont elles dépendent. Selon votre solution de stockage, la taille de la vue et la fréquence des mises à jour, cet impératif peut engendrer un coût non négligeable.
-
Surcharge de rafraîchissement
Les vues matérialisées fournissent un instantané statique : vous devez donc procéder à des actualisations incrémentielles pour obtenir la vue la plus à jour et conforme aux modifications ayant affecté les données sous-jacentes. Vous pouvez le faire à intervalles réguliers ou déclencher des rafraîchissements en fonction d'événements spécifiques. Dans tous les cas, votre stratégie doit définir la fréquence de rafraîchissement et prévoir une logique et des ressources pour calculer les données afin de garantir leur pertinence.
-
Compromis sur la performance
Malheureusement, le processus de rafraîchissement d'une vue matérialisée peut dégrader les performances globales de votre base de données. Cela peut être particulièrement sensible si l'actualisation consomme beaucoup de ressources ou entre en conflit avec d'autres opérations de base de données.
-
Applications limitées
Les vues matérialisées sont extrêmement avantageuses si une vue est consultée très fréquemment, ou lorsque les performances de lecture sont cruciales, comme c'est le cas dans l'entreposage de données. Pour autant, elles ne conviennent pas à tous les types de requêtes ni à tous les cas d'utilisation. Les tâches qui s'appuient sur des données mises à jour en temps réel, par exemple, ou les systèmes dont les données évoluent à une fréquence élevée, peuvent ne pas fonctionner au mieux avec des vues matérialisées.
Quand est-il intéressant d'utiliser des vues matérialisées ?
Maintenant qu'on cerne mieux la différence entre les vues de base de données les vues matérialisées, et que l'on comprend les avantages de l'utilisation des vues, dans quelles situations est-il intéressant de créer des vues matérialisées ? Voici quelques cas où les vues matérialisées peuvent rendre le processus d'accès aux données plus efficace.
Traitement par batch à intervalles réguliers
Si vous devez effectuer régulièrement des traitements par batch, les vues matérialisées précalculent et stockent les différentes parties d'une requête pour les traiter indépendamment. Par exemple, si vous gérez une paie hebdomadaire, vous pouvez utiliser des vues matérialisées pour stocker les informations des chèques de paie – salaire, impôts et commissions – des différents employés. Les données stockées dans la vue matérialisée seront ensuite actualisées à la fin de chaque semaine.
Distribution de données filtrées
Les vues matérialisées peuvent résoudre le problème qui se pose lorsqu'on veut mettre un dataset à disposition sur plusieurs emplacements : on les utilisera alors pour répliquer et mettre en cache les données provenant de sources distantes. C'est particulièrement utile pour les bases de données en lecture seule : vous pouvez copier et distribuer les données sur différents sites de stockage afin de réduire la charge globale sur la base de données source. Les personnes qui ont besoin d'accéder aux données pourront utiliser le site le plus proche et bénéficier ainsi d'un temps de réponse réduit.
Optimisation des tableaux de bord AI/BI
Les tableaux de bord AI/BI sont des outils efficaces pour visualiser des données et des rapports sur la Databricks Data Intelligence Platform. Simples et lisibles, ils sont parfaits pour partager et distribuer des visualisations, mais toutes les données présentées dans vos tableaux de bord public doivent impérativement être à jour.
Avec des vues matérialisées, vous pouvez planifier des mises à jour périodiques pour fournir les données les plus récentes, mais aussi améliorer considérablement la réactivité du tableau de bord pour les utilisateurs finaux en précalculant et en stockant les résultats des requêtes qui l'alimentent.
Analyser les données de séries chronologiques
L'un des principaux avantages des vues matérialisées est qu'elles fournissent des instantanés de données. Cela permet d'étudier l'évolution du jeu de données sous-jacent au fil du temps et d'obtenir des instantanés de données historiques qui peuvent être utiles pour produire des rapports.
Les vues matérialisées sont donc une excellente option dans un large éventail d'applications de business intelligence. Si vous devez effectuer des requêtes sur un schéma en étoile ou calculer des agrégats à partir de données brutes, les vues matérialisées stockent des résumés préagrégés, qui peuvent être des moyennes mensuelles, des sommes hebdomadaires ou des comptes quotidiens, par exemple. La représentation de l'évolution de ces chiffres dans le temps est extrêmement utile pour les analyses historiques et les rapports.
Anticipation de la déconnexion de la base de données principale
Si vous savez que la base de données sous-jacente peut être déconnectée, vous pouvez utiliser une vue matérialisée pour conserver les données les plus importantes à disposition. Pour ce type d'usage, vous devrez naturellement faire preuve de prudence et veiller à ce que votre calendrier de rafraîchissement soit robuste. Vous pourrez également mettre en cache la vue matérialisée localement.
Quand est-il intéressant d'utiliser des vues matérialisées ?
Gardez à l'esprit que, dans certains cas, les vues matérialisées ne constituent pas la meilleure option. Avant tout, si vos données sont rapides et faciles à interroger, le jeu n'en vaut pas la chandelle. D'autre part, si les données sources changent très rapidement, il n'y a guère d'intérêt à utiliser des vues matérialisées. Au contraire, même, il est probable que la surcharge de traitement due au rafraîchissement constant des données neutraliserait tout avantage en termes d'accélération de l'extraction des données.
Créer des vues matérialisées dans Databricks SQL
Les vues matérialisées dans Databricks SQL sont gérées via Unity Catalog. Elles enregistrent des résultats précalculés basés sur les données les plus récentes des tables sources. Contrairement aux implémentations traditionnelles, elles conservent l’état des données tel qu’il était lors du dernier rafraîchissement plutôt que de les mettre à jour chaque fois qu’elles sont interrogées. Vous pouvez choisir d’actualiser manuellement ou de programmer des rafraîchissements automatiques pour les vues matérialisées.
Les vues matérialisées Databricks SQL sont particulièrement utiles pour le traitement ETL (extraire, transformer et charger). Elles offrent une approche simple et déclarative pour gérer la conformité, les corrections, les agrégations et la capture des changements de données (Change Data Capture/CDC). En précalculant les requêtes lentes et les calculs fréquemment utilisés, ces vues réduisent les coûts et améliorent la rapidité des recherches. De plus, elles permettent des transformations transparentes en nettoyant, enrichissant et dénormalisant les tables de base. Dans certains cas, elles peuvent même effectuer des calculs incrémentaux à partir des tables de base, ce qui réduit les coûts et simplifie l’expérience utilisateur.
Databricks a d’abord introduit les vues matérialisées dans le cadre de l’architecture Lakehouse, avec le lancement de DLT. La création d'une vue matérialisée dans un warehouse DB SQL déclenche automatiquement la création d’un pipeline DLT qui gère l'actualisation de la vue Vous pouvez facilement surveiller l’état des opérations de rafraîchissement à l'aide de l’interface utilisateur de DLT, de l’API ou de la CLI.
Comment fonctionne la création de vues matérialisées
L’exemple suivant montre comment créer la vue matérialisée commandes_clients à partir des tables de base commandes et clients :
Comment fonctionne le rafraîchissement des vues matérialisées
Dans Databricks SQL, vous avez la possibilité de configurer le refresh automatique d’une vue matérialisée sur la base d’une planification prédéfinie. Cette planification peut être configurée lors de la création de la vue matérialisée à l’aide de la clause SCHEDULE, ou ajoutée ultérieurement à l’aide de l’instruction ALTER VIEW. Une fois la planification établie, un job Databricks est automatiquement créé pour gérer les mises à jour.
Vous pouvez revoir les détails de la planification à tout moment en utilisant l’instruction DESCRIBE EXTENDED. Cette instruction permet de consulter la planification configurée pour la vue matérialisée. Cela vous permet de superviser et de gérer facilement la planification automatique de refresh pour votre vue matérialisée dans Databricks SQL.
Pour plus d’informations sur les vues matérialisées, reportez-vous à la documentation du produit Databricks ou consultez le blog d’introduction.