cours
Iceberg Apache vs Lac Delta : Caractéristiques, différences et cas d'utilisation
Le traitement des Big Data implique souvent de travailler avec des données non structurées, qui peuvent être difficiles à gérer et à analyser. Des suppressions accidentelles ou d'autres erreurs peuvent se produire à tout moment, ce qui représente un risque majeur pour l'intégrité des données.
Apache Iceberg et Delta Lake sont des formats de tableaux open-source principalement utilisés pour la gestion de lacs de données et de lacustres à grande échelle. Les deux plateformes offrent des fonctionnalités telles que l'évolution des schémas, le voyage dans le temps et les transactions ACID pour relever les défis liés au traitement d'énormes ensembles de données. Bien que chacune d'entre elles présente des avantages uniques, elles ont un objectif commun : maintenir la cohérence des données entre les ensembles de données.
Dans cet article, j'expliquerai les principales caractéristiques, similitudes et différences architecturales entre Apache Iceberg et Delta Lake afin de vous aider à choisir l'outil le mieux adapté à vos besoins.
Qu'est-ce qu'Apache Iceberg ?
Développé par Netflix, puis donné à la Apache Software Foundation, Iceberg vise à résoudre les problèmes liés à la gestion de lacs de données à grande échelle. Il s'agit d'un format performant pour les tableaux analytiques de grande taille qui permet de gérer et d'interroger efficacement des ensembles de données massifs. Ses caractéristiques répondent à de nombreuses limitations des approches traditionnelles de stockage des lacs de données.
Comprenons Apache Iceberg plus en détail.
Caractéristiques d'Apache Iceberg
Voici quelques-unes des principales fonctionnalités d'Apache Iceberg, qui sont très utiles aux ingénieurs de données lorsqu'ils travaillent avec des ensembles de données.
- Évolution du schéma : Dans les bases de données traditionnelles, la modification de la structure de vos données (comme l'ajout d'une nouvelle colonne) peut s'avérer fastidieuse. Iceberg vous facilite la tâche. Par exemple, si vous suivez les données de vos clients et que vous souhaitez ajouter un champ
loyalty_points
, vous pouvez le faire sans affecter les données existantes ni interrompre les requêtes en cours. Cette flexibilité est particulièrement utile pour les projets de données à long terme qui doivent s'adapter au fil du temps. - Partitionnement : Il permet d'organiser vos données en morceaux plus petits et plus faciles à gérer. Les requêtes sont ainsi plus rapides, car vous n'avez pas à rechercher toutes les données à chaque fois. Par exemple, je dispose d'un vaste ensemble de données sur les ventes. Iceberg peut automatiquement organiser ces données en fonction de la date, du lieu ou de tout autre facteur pertinent.
- Voyage dans le temps : Cette fonction vous permet d'accéder facilement aux versions historiques des données. Si quelqu'un supprime accidentellement des informations importantes ou si vous devez comparer des données actuelles avec un état antérieur, vous pouvez vous rendre sur le site et remonter jusqu'à un point précis dans le temps. Ces requêtes ponctuelles simplifient les processus d'audit et de récupération des données.
- Intégrité des données : La corruption des données peut avoir de nombreuses causes, telles que des problèmes de réseau, des problèmes de stockage ou des bogues de logiciels. Iceberg utilise des techniques mathématiques (sommes de contrôle) pour détecter si un seul bit de vos données a été modifié de manière inattendue. Cela garantit que les données que vous analysez sont exactement les mêmes que celles qui ont été stockées à l'origine.
- Compaction et optimisation : Au fil du temps, les systèmes de données peuvent être encombrés par de nombreux petits fichiers, ce qui ralentit le traitement. Iceberg fait périodiquement le ménage en combinant les petits fichiers et en organisant les données de manière plus efficace.
Ces caractéristiques font d'Iceberg un outil particulièrement adapté à l'analyse de données à grande échelle, en particulier si vous traitez des données qui changent fréquemment ou qui doivent être consultées de différentes manières sur de longues périodes.
Consultez l'article du blog Apache Iceberg Explained pour vous plonger dans cette technologie passionnante.
Qu'est-ce que le lac Delta ?
Développé par Databricks, Delta Lake fonctionne de manière transparente avec Spark, ce qui en fait un choix populaire pour les organisations déjà investies dans l'écosystème Spark. Il s'agit d'une couche de stockage open-source qui apporte les transactions ACID (atomicité, cohérence, isolation, durabilité) à Apache Spark et aux charges de travail big data.
Les entrepôts de données basés sur Delta Lake rationalisent l'entreposage de données et l'apprentissage automatique afin de maintenir la qualité des données grâce à des métadonnées évolutives, à la gestion des versions et à l'application des schémas.
Caractéristiques du lac Delta
Voici les principales caractéristiques qui font de Delta Lake une bonne solution pour le traitement moderne des données :
- Transactions ACID : Les lacs de données traditionnels ont souvent du mal à maintenir la cohérence des données. Pour y remédier, Delta Lake apporte aux lacs de données les propriétés ACID associées aux bases de données. Cela signifie que vous pouvez effectuer des opérations complexes sur vos données sans vous soucier de la corruption des données ou des incohérences, même si un problème survient en cours de processus.
- Version des données et voyage dans le temps : À mesure que les réglementations sur les données, comme le GDPR , deviennent plus strictes, le cursus des changements de données au fil du temps est devenu inestimable. La fonction de voyage dans le temps de Delta Lake vous permet d'accéder à des versions antérieures de vos données et de les restaurer. Ceci est utile pour la mise en conformité et l'exécution d'expériences avec différentes versions de vos ensembles de données.
- Unification des flux et des lots : Traditionnellement, les entreprises avaient besoin de systèmes distincts pour le traitement par lots (traitement simultané de gros volumes de données) et le traitement en continu (traitement de données en temps réel). Delta Lake comble cette lacune et vous permet d'utiliser le même système pour les deux. Cela simplifie votre architecture de données et vous permet de créer des pipelines de données plus flexibles.
- Traitement évolutif des métadonnées : À mesure que les volumes de données atteignent l'échelle du pétaoctet, la gestion des métadonnées (données sur vos données) devient difficile. Par conséquent, de nombreux systèmes ralentissent considérablement lorsqu'ils traitent des millions de fichiers. Cependant, Delta Lake peut gérer des échelles massives sans dégradation des performances, ce qui le rend adapté aux très grands lacs de données.
- Optimisation des lectures et des écritures : La performance est essentielle dans les scénarios de big data. Delta Lake intègre le saut de données, la mise en cache et le compactage pour accélérer les opérations de lecture et d'écriture. Cela se traduit par des requêtes plus rapides et une utilisation plus efficace des ressources de calcul, ce qui permet de réaliser des économies dans les environnements cloud.
Le cours Big Data Fundamentals with PySpark approfondit le traitement moderne des données avec Spark. Il s'agit d'une excellente mise à jour de cette puissante technologie.
Devenez ingénieur en données
Apache Iceberg et Delta Lake : Similitudes
Apache Iceberg et Delta Lake gérant tous deux de grandes quantités de données, examinons leurs similitudes fondamentales.
Transactions ACID et cohérence des données
Les deux outils peuvent assurer une cohérence totale des données à l'aide de transactions ACID et de versions. Toutefois, Iceberg utilise l' approche de fusion à la lecture, tandis que Delta Lake utilise la stratégie de fusion à l'écriture.
Par conséquent, chacun d'entre eux gère différemment les performances et la gestion des données. Iceberg peut fournir un support complet pour l'évolution des schémas, tandis que Delta Lake assure la conformité des schémas.
Soutien aux voyages dans le temps
La fonctionnalité de voyage dans le temps permet aux utilisateurs d'interroger des versions historiques des données. Il s'agit donc d'un outil précieux pour l'audit, le débogage et même la reproduction d'expériences. Iceberg et Delta Lake prennent tous deux en charge le voyage dans le temps, ce qui signifie que vous pouvez accéder à des états antérieurs des données sans vous inquiéter.
Caractère open-source
Apache Iceberg et Delta Lake sont des technologies à code source ouvert. Cela signifie que tout le monde peut les utiliser gratuitement et même contribuer à les améliorer. En outre, le fait d'être un logiciel libre signifie que vous n'êtes pas lié au produit d'une seule entreprise - vous êtes plus libre de changer d'outil ou de le combiner selon vos besoins. Et comme leur code est public, vous pouvez même l'optimiser pour vos besoins spécifiques.
Les principales caractéristiques communes à l'iceberg Apache et au lac Delta. Image créée par l'auteur avec napkin.ai.
Iceberg contre lac Delta : Différences architecturales fondamentales
Si les lacs Iceberg et Delta présentent des similitudes, ils diffèrent par leur architecture. Voyons comment :
Modèle de transaction
Iceberg et Delta Lake garantissent la fiabilité des données dans les lacs de données, mais ils y parviennent par des mécanismes différents. Iceberg utilise des instantanés pour les transactions atomiques afin de s'assurer que les changements sont entièrement validés ou annulés. Mais Delta Lake utilise les tableaux de transactions pour s'assurer que seules les modifications validées sont validées dans le tableau, ce qui garantit la fiabilité des mises à jour de données.
Gestion des métadonnées
Apache Iceberg utilise une structure de métadonnées hiérarchique, qui comprend des fichiers de manifeste, des listes de manifeste et des fichiers de métadonnées. Cette conception permet de rationaliser le traitement des requêtes en éliminant les opérations coûteuses telles que l'énumération et le renommage des fichiers.
Cependant, Delta Lake adopte une approche basée sur les transactions pour enregistrer chaque transaction dans un journal. Pour améliorer l'efficacité des requêtes et simplifier la gestion des journaux, il consolide périodiquement ces tableaux dans desfichiers de points de contrôle Parquet , qui capturent l'état complet du tableau.
Compatibilité des formats de fichiers
Iceberg est flexible avec les formats de fichiers et peut travailler nativement avec des fichiers Parquet, ORC et Avro. C'est utile si vous avez des données dans différents formats ou si vous souhaitez changer de format à l'avenir sans modifier l'ensemble de votre système.
Delta Lake stocke principalement les données au format Parquet parce que ce format est efficace, en particulier pour les requêtes analytiques. Il se concentre uniquement sur un format afin d'offrir les meilleures performances possibles pour ce type de fichier spécifique.
Performance et évolutivité
Les lacs de données Iceberg et Delta Lake sont à l'échelle des lacs de données mais utilisent des stratégies différentes. Iceberg donne la priorité à l'organisation avancée des données avec des fonctionnalités telles que le partitionnement et le compactage, tandis que Delta Lake met l'accent sur la haute performance grâce à son moteur Delta, au compactage automatique et aux capacités d'indexation.
Différences entre les carottes de l'Apache Iceberg et du Delta Lake. Image créée par l'auteur avec napkin.ai.
Cas d'utilisation d'Apache Iceberg
Grâce à ses caractéristiques uniques, Apache Iceberg est rapidement devenu une solution de choix pour la gestion moderne des lacs de données. Examinons quelques-uns de ses principaux cas d'utilisation pour comprendre ses points forts.
Lacs de données natifs du cloud
Voici pourquoi Iceberg est un choix populaire pour les organisations qui construisent des lacs de données fonctionnant à l'échelle du cloud :
- Forte évolution des schémas : Il vous permet d'ajouter, de supprimer ou de modifier des colonnes sans affecter les requêtes existantes. Par exemple, si vous avez besoin d'ajouter un nouveau champ pour suivre les préférences des utilisateurs, vous pouvez le faire sans reconstruire l'ensemble de votre jeu de données ou mettre à jour toutes vos requêtes.
- Performance : Des techniques avancées telles que le regroupement des données et la gestion des métadonnées optimisent les performances des requêtes. Ils élaguent rapidement les fichiers de données inutiles afin de réduire la quantité de données analysées et d'améliorer la vitesse d'interrogation.
- Évolutivité : Gérez des milliards de fichiers et des pétaoctets de données. En outre, sa fonction d'évolution des partitions vous permet de modifier l'organisation des données sans interruption de service ni migration coûteuse.
Modèles de données complexes
Les équipes qui traitent des modèles de données complexes trouvent Iceberg particulièrement utile pour les raisons suivantes :
- Flexibilité du schéma : Prise en charge des types de données imbriqués (structures, listes et cartes) pour représenter des relations complexes. Par exemple, une plateforme de commerce électronique pourrait stocker les détails d'une commande, y compris les structures imbriquées pour les articles et les données du client, le tout dans un seul tableau.
- Questions sur les voyages dans le temps : Cette méthode permet de conserver des instantanés de vos données afin d'interroger les données telles qu'elles existaient à n'importe quel moment dans le passé. Cette fonction est très utile pour reconstituer l'état de vos données à tout moment à des fins de conformité ou pour réexécuter des analyses sur des instantanés de données historiques.
Intégration avec les outils
Iceberg est compatible avec divers outils, ce qui en fait un choix polyvalent pour l'écosystème des données. Jetons un coup d'œil à quelques-unes de ses principales intégrations :
Iceberg fonctionne de manière transparente avec les éléments suivants :
- Apache Spark pour le traitement de données à grande échelle et l'apprentissage automatique.
- Trino pour des requêtes SQL rapides et distribuées sur plusieurs sources de données.
- Apache Flink pour le traitement de flux en temps réel et le calcul par lots.
Les principaux fournisseurs de cloud suivants offrent une prise en charge native d'Iceberg :
- Amazon Web Services (AWS ) s'intègre avec AWS Glue, Redshift, EMR et Athena.
- Google Cloud Platform (GCP) fonctionne avec BigQuery et Dataproc.
- Microsoft Azure est compatible avec Azure Synapse Analytics.
Iceberg fournit également des bibliothèques de clients pour différents langages de programmation, tels que :
- SQL écrit des requêtes SQL standard sur les tableaux d'Iceberg.
- Python utilise PySpark ou des bibliothèques comme pyiceberg pour la manipulation des données.
- Java exploite l'API Java native pour les opérations de bas niveau et les intégrations personnalisées.
Spécification du format des tableaux Apache Iceberg. Source de l'image : Documentation sur les icebergs.
Cas d'utilisation du lac Delta
Delta Lake peut résoudre des problèmes courants et faciliter la gestion des données. Examinons quelques situations clés où il est vraiment utile.
Charges de travail unifiées en mode batch et en mode streaming
Avec Delta Lake, vous n'avez pas besoin de systèmes distincts pour les différents types de données. Au lieu de cela, vous pouvez disposer d'un système unique qui gère tout. Vous pouvez ajouter de nouvelles données à vos tableaux en temps réel, et elles sont immédiatement prêtes à être analysées. Vos données sont donc toujours à jour.
Vous pouvez créer un flux de travail unique qui traite les anciennes et les nouvelles données afin de rendre l'ensemble de votre système moins complexe et plus facile à gérer. Cette approche unifiée simplifiera vos pipelines de données.
Transactions ACID pour les lacs de données
Delta Lake apporte une grande fiabilité aux lacs de données grâce aux transactions ACID. Par exemple :
- Les hôpitaux Les hôpitaux peuvent conserver des dossiers de patients précis et à jour afin de fournir des soins adéquats et de respecter les règles de confidentialité.
- Les banques peuvent s'assurer que toutes les transactions financières sont enregistrées avec précision et ne peuvent être modifiées accidentellement.
- Les magasins de détail peuvent conserver des inventaires précis, même lorsque de nombreuses mises à jour ont lieu simultanément. Cela permet d'éviter des problèmes tels que la vente d'articles qui ne sont pas en stock.
Le lac Delta assure cette fiabilité en garantissant que tous les changements sont appliqués intégralement ou pas du tout. En outre, il garantit que les données passent toujours d'un état valide à un autre et que les différentes opérations n'interfèrent pas les unes avec les autres.
L'écosystème Apache Spark
Delta Lake fonctionne également de manière transparente avec Apache Spark, ce qui constitue un avantage considérable pour de nombreuses organisations. Si vous utilisez déjà Spark, l'ajout de Delta Lake sera simple et ne nécessitera pas de changements majeurs dans votre configuration existante. Votre équipe peut utiliser les mêmes outils Spark et les mêmes commandes SQL que ceux qu'elle connaît déjà.
Par conséquent, il permettra à vos jobs Spark de s'exécuter plus rapidement, en particulier lorsqu'il s'agit de traiter de grandes quantités de données. Pour ce faire, il organise les données de manière plus efficace et utilise des techniques d'indexation intelligentes.
Iceberg Apache vs Lac Delta : Un résumé
Résumons les principales différences entre Apache Iceberg et Delta Lake pour vous aider à comprendre rapidement les points forts de leurs formats et leurs principales caractéristiques.
Caractéristiques |
Iceberg Apache |
Delta Lake |
Transaction ACID |
Oui |
Oui |
Voyage dans le temps |
Oui |
Oui |
Version des données |
Oui |
Oui |
Format de fichier |
Parquet, ORC, Avro |
Parquet |
Évolution du schéma |
Complet |
Partiel |
Intégration avec d'autres moteurs |
Apache Spark, Trino, Flink |
Principalement Apache Spark |
Compatibilité avec le cloud |
AWS, GCP, Azure |
AWS, GCP |
Moteurs de recherche |
Spark, Trino, Flink |
Spark |
Langage de programmation |
SQL, Python, Java |
SQL, Python |
Note : Le meilleur choix dépend de vos besoins, de vos exigences en matière d'évolutivité et de votre stratégie de données à long terme.
Conclusion
Lorsque vous choisissez entre Apache Iceberg et Delta Lake, tenez compte de votre cas d'utilisation spécifique et de votre pile technologique existante. La flexibilité d'Iceberg en matière de formats de fichiers et de moteurs de requête le rend idéal pour les environnements cloud-native. Cependant, l'intégration étroite de Delta Lake avec Apache Spark est une bonne option pour les organisations fortement investies dans l'écosystème Spark.
Vous pouvez également consulter des ressources DataCamp pertinentes pour renforcer votre compréhension des données :
- Comprendre le cours d'ingénierie des données pour saisir les concepts fondamentaux
- Cours de conception de bases de données et d'entreposage de données pour structurer efficacement les données à grande échelle.
- Le cours Modern Data Architecture vous permettra de vous familiariser avec les meilleures pratiques et les tendances actuelles.
Bon apprentissage !
Devenez ingénieur en données
FAQ
Quelle est la principale différence entre les stratégies de fusion à la lecture et de fusion à l'écriture ?
Merge-on-Read (utilisé par Iceberg) lit les données à partir de fichiers existants et applique les modifications pendant la durée de la requête. Merge-on-Write (utilisé par Delta Lake) fusionne les mises à jour dans les données de base au cours du processus d'écriture afin de garantir des lectures plus rapides au prix d'opérations d'écriture plus lentes.
Apache Iceberg et Delta Lake peuvent-ils gérer des données à l'échelle du pétaoctet ?
Oui, Apache Iceberg et Delta Lake traitent efficacement des ensembles de données à l'échelle du pétaoctet. Ils offrent des fonctionnalités avancées telles que le partitionnement, la gestion des métadonnées et le compactage afin d'optimiser les performances des grands lacs de données.
Quelles sont les performances d'Apache Iceberg et de Delta Lake lors de l'interrogation de structures de données profondément imbriquées ?
Apache Iceberg est excellent pour interroger des structures de données profondément imbriquées. Il prend en charge les formats de stockage tabulaire tels que Parquet, qui sont optimisés pour les données imbriquées. En revanche, Delta Lake prend également en charge les données imbriquées, mais ses performances peuvent varier en fonction de la complexité de la requête et de la taille de l'ensemble de données.
Apache Iceberg et Delta Lake peuvent-ils fonctionner ensemble dans la même architecture de lac de données ?
Oui, Apache Iceberg et Delta Lake peuvent coexister au sein d'un même lac de données. Chacune d'entre elles peut être utilisée pour des cas d'utilisation différents, en fonction des besoins. Par exemple, vous pouvez utiliser Delta Lake pour les charges de travail centrées sur Apache Spark et Iceberg pour une intégration plus souple avec divers moteurs de requête.
Y a-t-il des limitations à l'utilisation du lac Delta avec des moteurs qui ne sont pas des Spark ?
Delta Lake est étroitement intégré à Apache Spark, et s'il peut fonctionner avec d'autres moteurs comme Presto ou Hive, ces intégrations sont encore en cours d'évolution. Les performances pourraient ne pas être aussi optimisées qu'avec Spark, ce qui pourrait limiter son efficacité en dehors de l'écosystème Spark.
Comment Iceberg et Delta Lake gèrent-ils les problèmes liés aux petits fichiers dans les lacs de données ?
Apache Iceberg et Delta Lake traitent tous deux le problème des petits fichiers par le biais du compactage. Iceberg combine périodiquement de petits fichiers pour optimiser les performances des requêtes, tandis que Delta Lake utilise le compactage automatique pour consolider les fichiers lors des opérations d'écriture. Cela permet d'améliorer les performances en réduisant la surcharge causée par de nombreux petits fichiers.
Pourquoi Databricks a-t-il racheté Tabular (la société à l'origine d'Iceberg) ?
Databricks a acquis Tabular pour renforcer ses capacités avec Apache Iceberg, créé à l'origine par les fondateurs de Tabular. L'acquisition vise à améliorer la compatibilité et l'interopérabilité entre Delta Lake et Iceberg, pour aboutir finalement à un format unifié de Lakehouse qui combine les forces des deux projets open-source.
Que signifie l'acquisition de Tabular pour les utilisateurs de Delta Lake et d'Iceberg ?
Cette acquisition signifie que Databricks travaillera activement à rapprocher Delta Lake et Iceberg en termes de compatibilité. Les utilisateurs bénéficieront d'une meilleure intégration, Delta Lake UniForm servant déjà de plateforme pour permettre l'interopérabilité entre Delta Lake, Iceberg et Apache Hudi. Cela permet aux utilisateurs de travailler sur différents formats sans être enfermés dans une solution unique.
Databricks continuera-t-il à supporter à la fois Delta Lake et Iceberg ?
Oui, Databricks a indiqué qu'il s'engageait à respecter les deux formats. En acquérant Tabular et en intégrant les créateurs originaux d'Apache Iceberg, Databricks cherche à favoriser la collaboration entre les communautés Iceberg et Delta Lake. Leur objectif est de développer une norme unique et ouverte pour l'interopérabilité des formats des maisons de lac, ce qui offrira aux utilisateurs plus d'options et de flexibilité.
Je suis un stratège du contenu qui aime simplifier les sujets complexes. J'ai aidé des entreprises comme Splunk, Hackernoon et Tiiny Host à créer un contenu attrayant et informatif pour leur public.
Apprenez-en plus sur l'ingénierie des données avec ces cours !
cours
Introduction à PySpark
cours