Datenwelten verstehen – drei Modelle im Überblick
Data Warehouse, Data Lake und Lakehouse
Von: Christopher Münch
Wer große Datenmengen analysieren will, muss sich vorher Gedanken machen, wie diese für die weitere Verarbeitung effizient gespeichert werden können. Data Warehouse, Data Lake oder Lakehouse sind verschiedene Ansätze zur Speicherung von großen Datenmengen. Doch worin unterscheiden sich diese Ansätze und wo liegen ihre Vor- und Nachteile?
Die Datenzentrale: Was ist ein Data Warehouse?
Wenn von einem Data Warehouse die Rede ist, geht es in der Regel um eine zentrale relationale Datenbank. Dabei handelt es sich beispielsweise um eine Datenbank auf einem Microsoft SQL Server, in der aufbereitete Daten in Tabellen gespeichert werden. Daten werden aus verschiedenen Quellen extrahiert, transformiert und in das Data Warehouse geladen. Dies geschieht üblicherweise durch sogenannte ETL-Prozesse (Extract, Transform, Load), die die Daten zusätzlich bereinigen, aufbereiten, aggregieren und mit anderen Daten verknüpfen.
Eine große Herausforderung für ein Data Warehouse ist es, mit der ständig wachsenden Datenmenge und der Komplexität der Anforderungen Schritt zu halten. Da eine Datenbank meist nur horizontal skalierbar ist – in Form von besserer Hardware auf der Maschine, auf der der Server läuft – ist die Skalierung mit entsprechend hohen Kosten verbunden.
Die unendliche Datenquelle: Was ist ein Data Lake?
Ein Data Lake ist eine zentrale Speicherplattform, die aufgrund ihrer Flexibilität und geringen Kosten vor allem im Cloud-Bereich eingesetzt wird. In der Regel ist ein Data Lake ein Azure Blob Storage. In der kürzlich vorgestellten Microsoft Fabric wird ein Data Lake – genannt OneLake – direkt enthalten sein.
Im Gegensatz zum Data Warehouse werden in einem Data Lake die Daten in ihrem Roh- bzw. Originalformat gespeichert. So können die Daten flexibel analysiert, verarbeitet oder genutzt werden, ohne sich an ein strenges Schema wie bei einer Tabelle halten zu müssen.
Für die Verarbeitung und Analyse werden insbesondere Tools wie Hadoop oder Spark eingesetzt, die explizit für die Verarbeitung großer Datenmengen entwickelt wurden. Die oft geringe Datenqualität und insbesondere die geringe Datensicherheit sind jedoch große Nachteile von Data Lakes.
Darüber hinaus handelt es sich bei einem Data Lake an sich zunächst einmal nur um einen Speicher, der über keinerlei Unterstützung für Transaktionen verfügt. Bei immer größer werdenden Data Lakes muss außerdem darauf geachtet werden, dass sie nicht aus dem Ruder laufen. Sonst wird aus einem Data Lake schnell ein Data Swamp, in dem das reinste Chaos regiert.
Brückenschlag: das Data Lakehouse
Ein Data Lakehouse kann, wie der Name schon andeutet, als Kombination aus Data Lake und Data Warehouse verstanden werden. Das Lakehouse vereint also die Vorteile beider Technologien. Ein Lakehouse nutzt die Skalierbarkeit und Flexibilität eines Data Lakes, um Daten aus verschiedenen Quellen zu speichern. Es ergänzt sie jedoch um die Zuverlässigkeit und Stabilität eines Data Warehouse, indem es die Definition von Tabellen mit einem festgelegten Schema ermöglicht. Diese Tabellen erfüllen auch die ACID-Eigenschaften (Atomicity, Consistency, Isolation & Durability), die sicherstellen, dass jede Änderung an der Tabelle durch Transaktionen abgesichert wird. Dadurch wird die Datenintegrität gewährleistet.
Um Daten in eine Lakehouse-Tabelle zu schreiben, wird in den meisten Fällen ebenfalls Apache Spark verwendet. Hier kommen beispielsweise Notebooks in Azure Synapse Analytics zum Einsatz, mit denen die Verarbeitung der Daten über Python, Scala oder SQL erfolgt. Eine Technologie, die für die Implementierung eines Data Lakehouse verwendet werden kann, ist Delta Lake. Dieses Open-Source-Projekt erweitert einen Data Lake um die oben beschriebenen und viele weitere Funktionen. Auch Microsoft investiert stark in diese Technologie und wird Delta als primäres Datenformat für nahezu alle Daten in Microsoft Fabric verwenden.
Über den Autor: Christopher Münch
Christopher Münch, Data Engineer & Anwendungsentwickler, hat einen Bachelor-Abschluss in Informatik und verfügt über langjährige Erfahrung in der Programmiersprache C# und .NET sowie im Business-Intelligence-Umfeld rund um Microsoft SQL Server und Azure Synapse Analytics.