Delta Lake est une solution de lac de données proposée par Databricks qui gère l'intégralité du cycle de vie des données, de l'ingestion et de l'organisation à l'interrogation et à l'extraction. Associé à des outils tiers en amont et en aval, Delta Lake vous aide à bâtir un lac de données rapide, simple d'utilisation et sécurisé.
Contexte
Une solution classique de lac de données stocke divers types de données sur un moteur de stockage Big Data tel qu'Alibaba Cloud Object Storage Service (OSS) ou un système de fichiers distribués Hadoop (HDFS) local, et se connecte à un moteur d'analyse comme Spark ou Presto pour traiter ces données. Toutefois, cette approche présente les inconvénients suivants :
Les échecs d'importation génèrent des données corrompues difficiles à nettoyer et compliquent la récupération des tâches ayant échoué.
L'absence de processus ETL (Extract, Transform, Load) entraîne une supervision insuffisante de la qualité des données.
L'absence de prise en charge transactionnelle pour isoler les lectures et les écritures empêche l'exécution indépendante des opérations de lecture/écriture en flux continu et par lots.
La solution Delta Lake fonctionne de la manière suivante :
Elle ajoute une couche de gestion des données au-dessus de la couche de stockage Big Data, à l'image de la gestion des métadonnées dans une base de données. Les métadonnées sont stockées conjointement aux données et restent visibles pour les utilisateurs, comme illustré dans Entrepôt de données et lac de données.
Delta Lake introduit les propriétés ACID (Atomicity, Consistency, Isolation, Durability) fondées sur la gestion des métadonnées. Cela résout les problèmes liés aux données corrompues issues d'importations échouées et au manque d'isolation des lectures/écritures lors de l'ingestion.
Les métadonnées conservent les colonnes de la table source et Delta Lake valide les données lors de l'importation afin de garantir leur qualité.
La prise en charge des transactions permet aux opérations de lecture/écriture par lots et en flux continu de s'exécuter de manière isolée.
ACID est l'acronyme désignant les quatre propriétés clés garantissant la fiabilité des transactions de base de données : atomicité, cohérence, isolation et durabilité.
Figure 1. Entrepôt de données et lac de données 
Le tableau suivant compare l'entrepôt de données, le lac de données et Delta Lake.
|
Critères de comparaison |
Entrepôt de données |
Lac de données |
Delta Lake |
|
Architecture |
Calcul et stockage couplés ou découplés |
Calcul et stockage découplés |
Calcul et stockage découplés |
|
Gestion du stockage |
Strict, propriétaire |
Format natif |
Format courant, léger |
|
Scénarios |
Rapports, analyses |
Rapports, analyses, science des données |
Rapports, analyses, science des données |
|
Flexibilité |
Faible |
Élevée |
Élevée |
|
Qualité et fiabilité des données |
Très élevée |
Faible |
Élevée |
|
Transactionnel |
Pris en charge |
Non pris en charge |
Pris en charge |
|
Performances |
Élevées |
Faibles |
Élevées |
|
Extensibilité |
Dépend de l'implémentation |
Élevée |
Élevée |
|
Utilisateurs |
Administrateurs |
Administrateurs, data scientists |
Administrateurs, data scientists |
|
Coût |
Élevé |
Faible |
Faible |
Scénarios
Delta Lake convient à la gestion des lacs de données dans le cloud et prend en charge les scénarios suivants :
Interrogation en temps réel : les données circulent des sources en amont vers Delta Lake en temps réel et sont immédiatement disponibles pour interrogation. Par exemple, dans un scénario de capture des données modifiées (CDC), utilisez Spark Streaming pour consommer les journaux binaires en temps réel. La fonctionnalité de fusion de Delta Lake met à jour les données en amont dans le lac de données, que vous pouvez ensuite interroger avec Hive, Spark ou Presto. Grâce à la prise en charge d'ACID, l'ingestion des données et les interrogations sont isolées, ce qui évite les lectures sales.
Suppression ou mise à jour pour le Règlement général sur la protection des données (RGPD) : les solutions classiques de lac de données ne prennent pas en charge la suppression ou les mises à jour. Pour modifier les données dans ces solutions, vous devez effacer les données brutes et les réécrire dans le stockage. Delta Lake prend en charge la suppression et la mise à jour directes des données.
Synchronisation des données en temps réel avec CDC : utilisez la fonctionnalité de fusion de Delta Lake pour exécuter une tâche en flux continu qui fusionne les données en amont dans le lac de données en temps réel.
Contrôle de la qualité des données : utilisez la validation du schéma de Delta Lake pour filtrer les données anormales lors de l'importation ou pour les traiter davantage.
Évolution du schéma : les schémas de données ne sont pas figés. Delta Lake vous permet de modifier le schéma de données via une API.
Apprentissage automatique en temps réel : dans les scénarios d'apprentissage automatique, une grande partie des efforts est consacrée au traitement des données (nettoyage, transformation et extraction de caractéristiques), ce qui nécessite généralement de traiter séparément les données historiques et en temps réel. Delta Lake simplifie cette procédure en unifiant l'ensemble du pipeline de traitement des données en un seul flux fiable en temps réel. Les opérations telles que le nettoyage des données, la transformation et l'ingénierie des caractéristiques deviennent des actions de flux, éliminant ainsi la nécessité de traiter séparément les données historiques et en temps réel.
Comparaison avec Delta Lake open source
EMR Delta Lake étend Delta Lake open source en ajoutant la prise en charge de SQL, d'Optimize et d'autres fonctionnalités. Le tableau suivant compare les fonctionnalités d'EMR Delta Lake et de Delta Lake open source (version 0.6.1).
|
Fonctionnalité |
EMR Delta |
Delta open source |
|
SQL |
|
|
|
API |
|
|
|
Connecteur Hive |
Pris en charge |
Pris en charge |
|
Connecteur Presto |
Pris en charge |
Pris en charge |
|
Parquet |
Pris en charge |
Pris en charge |
|
ORC |
Non pris en charge |
Non pris en charge |
|
Format texte |
Non pris en charge |
Non pris en charge |
|
Data Skipping |
Pris en charge |
Non pris en charge |
|
ZOrder |
Pris en charge |
Non pris en charge |
|
Native DeltaLog |
Pris en charge |
Non pris en charge |