Read in English · Leer en español · Lire en français
Abschnitt 7.8 von 7.8 · Fortgeschritten · 27 Min. Lesezeit
Analytics, Streaming, Data Warehouses, Data Lakes und Data Mesh
Videolektion
5 Min. · auf Englisch gesprochen, mit UntertitelnNur anhören (Audio)
Transkript lesen
Bisher ging es in diesem Kapitel darum, das Geschäft zu betreiben. In dieser letzten Lektion geht es darum, es zu verstehen: wie analytische Daten gespeichert werden, wie sie dorthin gelangen, wie Live-Streams verarbeitet werden und wem das Ergebnis gehört.
Die Kassen eines Supermarkts sind dafür gebaut, jeden Kunden schnell zu bedienen, einen Einkaufskorb nach dem anderen. Niemand fragt das Kassenpersonal, welche Produkte sich in zwei Jahren am besten verkauft haben. Stattdessen werden jede Nacht die Tagesumsätze an die Zentrale geschickt. Dort halten Analysten jahrelange Historie bereit, aufbereitet für genau diese Art von Frage. Manche Zahlen können nicht bis morgen warten, etwa ein plötzlicher Ansturm auf Brot, deshalb werden sie live beobachtet. Bei der Analytics-Architektur geht es darum, die Zentrale und die Live-Beobachtung aufzubauen, ohne die Kassen zu bremsen.
Bisher ging es um Transaktionsverarbeitung: viele kleine, schnelle Lese- und Schreibvorgänge einzelner Datensätze, etwa eine Bestellung aufgeben. Analytics stellt andere Fragen, etwa nach dem Umsatz nach Küche und Region, Woche für Woche, über zwei Jahre. Das berührt Millionen Zeilen und ändert nichts. Eine einzige solche Abfrage kann dem Checkout die Ressourcen entziehen, von denen er abhängt. Die übliche Antwort ist deshalb, beides zu trennen und die Daten in eine Plattform für Scans zu kopieren, mit komprimierten Spalten und Schemas für Analysen. Die klassische Variante ist ein Data Warehouse.
Der am häufigsten gelehrte Entwurf dafür ist Ralph Kimballs Sternschema. In der Mitte steht eine Faktentabelle, die Geschäftsereignisse erfasst, hier eine Zeile pro Gericht einer gelieferten Bestellung. Sie enthält numerische Kennzahlen wie Menge und Positionssumme sowie Schlüssel auf die Dimensionen. Um sie herum liegen die Dimensionen, die jeden Fakt beschreiben: Datum, Restaurant, Kunde und Gericht. Nach ihnen filtern und gruppieren Sie, etwa nach Küche oder Wochentag. Beachten Sie die Zeile ganz unten. Jede Faktentabelle braucht eine deklarierte Granularität: genau das, was eine Zeile darstellt. Kimballs Methode macht das zur allerersten Entscheidung.
Hier sehen Sie, warum die Granularität wichtig ist. Das Team hat die Lieferzeit der Bestellung in jede Position der Bestellung kopiert. Zwei Bestellungen werden geliefert. Die erste hat eine Position und dauerte zwanzig Minuten. Die zweite hat vier Positionen und dauerte vierzig. Die korrekte durchschnittliche Lieferzeit beträgt dreißig Minuten. Der Durchschnitt über die Zeilen ergibt aber sechsunddreißig Minuten, weil die große Bestellung viermal zählt. Gemischte Granularitäten sind einer der häufigsten Gründe, warum Dashboards einander widersprechen. Die Lösung ist eine separate Faktentabelle mit einer Zeile pro Bestellung, für Kennzahlen wie Lieferzeit, Gebühr und Trinkgeld.
Daten gelangen über Pipelines ins Data Warehouse. Heute ist es üblich, Rohdaten zuerst zu laden und im Data Warehouse zu transformieren; so bleiben die Rohdaten erhalten, und Transformationen lassen sich korrigieren und neu ausführen. Change Data Capture liest das eigene Log einer Datenbank und streamt jedes Insert, Update und Delete, mit wenig Last auf der Quelle. Doch wer die privaten Tabellen eines anderen Service liest, koppelt sich an dessen Schema. Robuster ist es, wenn jeder Service Daten gezielt veröffentlicht, im Rahmen eines Datenvertrags. Ein Data Lake hält Rohdateien in günstigem Speicher, aber ohne Verantwortliche wird er zum Sumpf. Ein Lakehouse ergänzt darauf Transaktionen und Löschungen, über Open Table Formats wie Delta Lake und Apache Iceberg.
Manche Fragen können nicht warten, etwa ob eine Karte gerade betrügerisch verwendet wird. Stream-Prozessoren rechnen fortlaufend und schneiden den Stream in Fenster, hier von je fünf Minuten. Die zentrale Unterscheidung ist die zwischen Ereigniszeit, wann etwas geschah, und Verarbeitungszeit, wann das System es sah. Das Smartphone eines Kuriers im Aufzug erfasst eine Übergabe um drei nach sieben, liefert sie aber erst um dreizehn nach sieben aus. Ergebnisse, die die Wirklichkeit abbilden sollen, müssen die Ereigniszeit nutzen. Eine Watermark schätzt, wann alle Events bis zu einem Zeitpunkt eingetroffen sind, und schließt die Fenster. Also trifft die Übergabe ein, nachdem ihr Fenster geschlossen wurde. Verspätete Daten brauchen eine ausdrückliche Regel: verwerfen, beiseitelegen oder das Fenster aktualisieren. Längeres Warten ist vollständiger, früheres Ausgeben aktueller. Entscheiden Sie diese Abwägung mit dem Fachbereich.
Wie kombiniert man Batch und Streaming? Nathan Marz’ Lambda-Architektur von 2011 betreibt einen Batch-Layer für genaue Sichten und einen Speed-Layer für aktuelle Daten. Der Preis ist, dieselbe Logik zweimal zu schreiben. 2014 schlug Jay Kreps, einer der Schöpfer von Kafka, Kappa vor: nur einen Stream-Prozessor nutzen, das Eingabe-Log aufbewahren und durch erneutes Abspielen neu verarbeiten. Zum Schluss die Datenhoheit. 2019 schlug Zhamak Dehghani das Data Mesh vor: Fachteams besitzen ihre analytischen Daten und veröffentlichen sie als vertrauenswürdige Produkte auf einer gemeinsamen Self-Service-Plattform. Es beseitigt den zentralen Engpass, doch Kritiker weisen darauf hin, dass es reife Fachteams und echte Investitionen braucht und kleinere Organisationen meist mit einer gut geführten zentralen Plattform besser bedient sind.
Damit ist Kapitel 7 abgeschlossen. Wenn Sie so weit sind, legen Sie den optionalen Kapiteltest ab: zwanzig Multiple-Choice-Fragen und zwei schriftliche Antworten, mit einer Bestehensgrenze von achtzig Prozent. Gehen Sie dann weiter zu Kapitel 8 über Sicherheit, Datenschutz und Compliance by Design. Bis gleich.
Was Sie wissen müssen
- OLTP bedient viele kleine Transaktionen über Schlüssel; OLAP durchsucht und aggregiert große Datenmengen; ihre Trennung schützt die operativen Systeme und erlaubt der Analytics spaltenorientierte, denormalisierte Designs.
- Inmon baut zuerst ein integriertes, normalisiertes unternehmensweites Data Warehouse; Kimball baut dimensionale Sternschemas pro Geschäftsprozess, verbunden durch konforme Dimensionen; jede Faktentabelle braucht eine deklarierte Granularität.
- ELT lädt Rohdaten und transformiert sie im Data Warehouse; Change Data Capture streamt Änderungen aus Datenbank-Logs, aber veröffentlichte Datenverträge sind robuster, als die Tabellen eines anderen Service zu lesen.
- Ein Lakehouse ergänzt offene Dateien im Objektspeicher über Open Table Formats wie Delta Lake, Apache Iceberg und Apache Hudi um Transaktionen, Schemaevolution, Löschungen und Time Travel.
- Stream Processing muss nach Ereigniszeit rechnen, Streams in Tumbling-, Sliding- oder Session-Fenster schneiden und Watermarks sowie eine ausdrückliche Regel für verspätete Daten nutzen.
- Lambda (Marz) kombiniert Batch- und Speed-Layer um den Preis doppelter Logik; Kappa (Kreps, 2014) nutzt einen einzigen Stream-Prozessor und verarbeitet neu, indem es ein aufbewahrtes Log erneut abspielt.
- Data Mesh (Dehghani, 2019) beruht auf fachlicher Datenhoheit, Daten als Produkt, einer Self-Service-Plattform und föderierter, automatisierter Governance; es passt zu großen Organisationen mit reifen Fachteams.
Zwei verschiedene Workloads: OLTP und OLAP
Alles in diesem Kapitel drehte sich bisher um Online-Transaktionsverarbeitung (OLTP): viele kleine, schnelle Lese- und Schreibvorgänge einzelner Datensätze, etwa eine Bestellung aufgeben, eine Zahlung buchen oder die Position eines Kuriers aktualisieren. Analytics stellt eine andere Art von Frage. Wie hoch war der Umsatz nach Küche und Region, Woche für Woche, in den letzten zwei Jahren?
berührt Millionen Zeilen, liest von jeder nur wenige Spalten und ändert nichts. Das ist Online Analytical Processing (OLAP), und es unterscheidet sich so stark von OLTP, dass beides auf derselben Datenbank meist keinem von beiden gut dient: Eine große analytische Abfrage kann die Festplatten und den Puffer-Cache auslasten, von denen der Checkout abhängt, und das normalisierte Schema, das Transaktionen korrekt hält, zwingt Analysten, ein Dutzend Tabellen zu joinen.
Die übliche architektonische Antwort besteht darin, die Workloads zu trennen. Operative Systeme behalten ihre eigenen Datenbanken, die ihren Services gehören, wie in Abschnitt 7.1 beschrieben. Daten werden laufend oder periodisch in eine Analyseplattform kopiert, die für Scans ausgelegt ist: spaltenorientierte Speicherung, die nur die benötigten Spalten liest, starke Kompression, massiv parallele Abfrage-Engines und Schemas, die für Analysen geformt sind. Der Rest dieses Abschnitts behandelt, wie diese Plattform entworfen wird, wie Daten zu ihr gelangen, wie Streaming das Bild verändert und wem das Ergebnis gehört.
OLTP und OLAP im Vergleich
| Aspekt | OLTP (operativ) | OLAP (analytisch) |
|---|---|---|
| Typische Frage | Bestellung 81723 abrufen; als geliefert markieren | Durchschnittliche Lieferzeit nach Stadt und Stunde, letzte 12 Monate |
| Berührte Zeilen pro Abfrage | Eine bis einige hundert, über Schlüssel | Millionen bis Milliarden, per Scan |
| Schreibvorgänge | Ständige kleine Inserts und Updates | Massenladevorgänge oder Anhängen; wenige Updates |
| Schema | Normalisiert für Integrität (Abschnitt 0.5) | Denormalisiert, dimensional oder breite Tabellen |
| Speicherlayout | Zeilenorientiert, nach Schlüssel indiziert | Spaltenorientiert, komprimiert, nach Datum partitioniert |
| Nutzer | Kunden und Anwendungen | Analysten, Data Scientists, Dashboards, ML-Pipelines |
| Wichtigste Qualitäten | Niedrige Latenz, Konsistenz, Verfügbarkeit | Durchsatz, flexible Abfragen, Historie |
| Beispiele | PostgreSQL, MySQL, DynamoDB | Snowflake, BigQuery, Redshift, ClickHouse, Databricks SQL |
Data Warehouses und dimensionale Modellierung
Ein Data Warehouse ist eine für Analysen gebaute Datenbank, die bereinigte Daten aus vielen operativen Systemen integriert und deren Historie aufbewahrt. Zwei Schulen haben geprägt, wie Data Warehouses entworfen werden, und Fachleute streiten bis heute darüber. Bill Inmon, oft der Vater des Data Warehouse genannt (Building the Data Warehouse, 1992), vertritt einen Top-down-Entwurf: Zuerst wird ein unternehmensweites, normalisiertes, integriertes Data Warehouse als Single Source of Truth gebaut, und daraus werden dann abteilungsbezogene Data Marts abgeleitet. Ralph Kimball (The Data Warehouse Toolkit, erstmals 1996 erschienen, dritte Auflage mit Margy Ross 2013) vertritt einen Bottom-up-Entwurf: dimensionale Modelle Geschäftsprozess für Geschäftsprozess bauen und sie über gemeinsame, konforme Dimensionen integrieren (eine vereinbarte Definition von Kunde, Datum oder Restaurant, die jedes Modell nutzt). Inmons Ansatz bietet stärkere Integration bei höheren Anfangskosten; Kimballs liefert früher nutzbare Ergebnisse, braucht aber Disziplin, um die Dimensionen konform zu halten. Viele moderne Plattformen verbinden beides: eine bereinigte, integrierte Schicht, die dimensionale Modelle für die Nutzung speist.
Kimballs Sternschema ist nach wie vor das am häufigsten gelehrte Analysemodell. Eine zentrale Faktentabelle erfasst Geschäftsereignisse in einer deklarierten Granularität (eine Zeile pro Bestellposition, pro Zahlung, pro Kurier-Ping), mit numerischen Kennzahlen wie Menge, Betrag und Minuten sowie Fremdschlüsseln auf Dimensionstabellen. Jede Dimension enthält beschreibende Attribute zum Filtern und Gruppieren: Datumsangaben (mit vorberechneten Kennzeichen für Wochentag, Monat und Feiertag), Restaurants (Name, Küche, Stadt), Kunden und Gerichte. Abfragen bestehen dann aus einer Faktentabelle, gejoint mit wenigen kleinen Dimensionen, was spaltenorientierte Engines sehr effizient ausführen. Attribute, die sich im Lauf der Zeit ändern, etwa wenn ein Restaurant in eine andere Stadt zieht, werden mit Techniken für Slowly Changing Dimensions behandelt; die gängigste, Typ 2, fügt eine neue Dimensionszeile mit Gültigkeitsdaten hinzu, sodass historische Fakten weiterhin auf die Attribute zeigen, die damals galten.
Ein Sternschema für Bestellungen der Essenslieferung
-- Revenue and average delivery time by cuisine and weekday for last quarter.
-- One join per dimension; the fact table is scanned, never updated.
SELECT r.cuisine,
d.weekday,
SUM(f.line_total_pence) / 100.0 AS revenue_gbp,
AVG(f.delivery_minutes) AS avg_delivery_min
FROM fact_order_line f
JOIN dim_date d ON d.date_key = f.date_key
JOIN dim_restaurant r ON r.restaurant_key = f.restaurant_key
WHERE d.quarter = '2026-Q2'
AND r.region = 'North West'
GROUP BY r.cuisine, d.weekday
ORDER BY revenue_gbp DESC;
-- Caveat: delivery_minutes is per order, so averaging it over order LINES
-- weights big orders more. Grain decisions matter (see the worked example).Ausgearbeitetes Beispiel
Ausgearbeitetes Beispiel: die Granularität deklarieren
Das Analytics-Team baut die obige Faktentabelle in der Granularität von einer Zeile pro Gericht einer gelieferten Bestellung. Die Kennzahl delivery_minutes auf Bestellebene wurde in jede Position kopiert. Zwei Bestellungen werden geliefert: Bestellung A hat 1 Position und dauerte 20 Minuten; Bestellung B hat 4 Positionen und dauerte 40 Minuten.
| Korrekte durchschnittliche Lieferzeit | Pro Bestellung: (20 + 40) ÷ 2 = 30 Minuten. |
|---|---|
| Durchschnitt über die Faktenzeilen | Positionen: 20, 40, 40, 40, 40. Summe 180 ÷ 5 Zeilen = 36 Minuten. Falsch: Große Bestellungen zählen viermal. |
| Summe der Lieferminuten | 180, was keine Bedeutung hat: Die Kennzahl ist in dieser Granularität nicht additiv. |
| Lösung | Kennzahlen auf Positionsebene (Menge, Positionssumme) in der Faktentabelle der Bestellpositionen belassen und Kennzahlen auf Bestellebene (Lieferminuten, Liefergebühr, Trinkgeld) in eine separate Tabelle fact_order mit der Granularität von einer Zeile pro Bestellung legen, die dieselben konformen Dimensionen nutzt. |
| Prüfen | In fact_order: (20 + 40) ÷ 2 = 30 Minuten, und SUM(delivery_fee) zählt jede Gebühr nun einmal. |
Kimballs erster Entwurfsschritt besteht darin, die Granularität genau zu deklarieren, bevor Dimensionen oder Fakten gewählt werden, denn jede Kennzahl muss in dieser Granularität stimmen.
Gemischte Granularitäten in einer Tabelle sind eine der häufigsten Ursachen dafür, dass Dashboards einander widersprechen.
Daten hineinbringen: ETL, ELT und Change Data Capture
Daten gelangen über Pipelines ins Data Warehouse. Beim klassischen ETL (Extract, Transform, Load) extrahiert ein separates Werkzeug Daten aus den Quellsystemen, bereinigt und formt sie auf eigenen Servern um und lädt nur das Ergebnis. Seit Cloud-Data-Warehouses Speicher billig und Rechenleistung elastisch gemacht haben, ist ELT verbreitet: Rohdaten zuerst extrahieren und laden, dann im Data Warehouse mit SQL transformieren, oft verwaltet als versionierte, getestete Modelle mit einem Werkzeug wie dbt. ELT bewahrt die Rohdaten auf, sodass Transformationen korrigiert und erneut ausgeführt werden können; sein Risiko ist, dass sich personenbezogene Rohdaten weiter verbreiten als nötig.
Wie Daten extrahiert werden, ist ebenso wichtig. Nächtliche Vollkopien sind einfach, aber langsam und veraltet. Change Data Capture (CDC) liest mit einem Werkzeug wie Debezium das eigene Replikations-Log der Datenbank (das Write-Ahead-Log von PostgreSQL, das Binlog von MySQL) und streamt jedes Insert, Update und Delete als Event, mit niedriger Latenz und wenig Last auf der Quelle. Unabhängig vom Mechanismus koppelt das direkte Lesen der Tabellen eines anderen Service die Analyseplattform an dessen privates Schema, genau das Problem, das Abschnitt 7.1 beschrieben hat. Das robustere Muster ist, dass jeder Service Daten gezielt veröffentlicht, über Events oder einen vereinbarten Export, im Rahmen eines Datenvertrags.
Data Lakes, Lakehouses und Open Table Formats
Ein Data Lake (der Begriff wird James Dixon zugeschrieben, 2010) speichert Rohdaten aus vielen Quellen in ihrer ursprünglichen Form, meist als Dateien in günstigem Objektspeicher wie Amazon S3, oft in spaltenorientierten Formaten wie Apache Parquet. Er schiebt das Schema auf, bis die Daten gelesen werden; das passt zu Data Scientists, die rohe Details wollen, und zu Daten, deren Verwendung noch nicht bekannt ist. Data Lakes haben sich den Ruf erworben, zu Datensümpfen
zu werden: Ohne Verantwortliche, Dokumentation und Qualitätsprüfungen vertraut niemand ihrem Inhalt. Dateien im Objektspeicher fehlt zudem, was ein Data Warehouse bietet: Transaktionen, Updates und Löschungen, Schemadurchsetzung und konsistente Lesevorgänge, während Daten geschrieben werden.
Das Lakehouse (Armbrust, Ghodsi, Xin und Zaharia, CIDR 2021) ergänzt diese Data-Warehouse-Funktionen auf offenen Dateien im Data Lake. Die tragende Technologie ist das Open Table Format: Delta Lake (entstanden bei Databricks), Apache Iceberg (entstanden bei Netflix) und Apache Hudi (entstanden bei Uber). Jedes führt eine Metadatenschicht (ein Transaktions-Log oder einen Baum aus Manifest-Dateien), die festhält, welche Datendateien jede Version einer Tabelle bilden. Das ermöglicht atomare Commits, nebenläufige Schreiber mit optimistischer Nebenläufigkeitskontrolle, Schemaevolution, Updates und Löschungen auf Zeilenebene (nötig für Löschanträge) und Time Travel: eine Tabelle so abzufragen, wie sie in einer früheren Version war. Weil das Format offen ist, können mehrere Engines (Spark, Trino, Flink und zunehmend die Cloud-Data-Warehouses selbst) dieselben Tabellen lesen und schreiben, was Lock-in verringert. Viele Lakehouses organisieren Daten in Schichten, von Databricks als Medallion-Architektur bekannt gemacht: Bronze für roh aufgenommene Daten, Silber für bereinigte und konforme Daten, Gold für Modelle auf Geschäftsebene wie Sternschemas.
Stream Processing: Ereigniszeit, Fenster und Watermarks
Batch-Pipelines beantworten Fragen über gestern. Manche Fragen können nicht warten: Wird diese Karte gerade betrügerisch verwendet, sind die Kuriere in Manchester heute Abend verspätet, welche Restaurants sollten pausiert werden, weil ihre Küchen überlastet sind? Stream-Prozessoren wie Apache Flink, Kafka Streams und Spark Structured Streaming rechnen fortlaufend über unbegrenzte Event-Streams. Die grundlegenden Konzepte stammen aus Googles Dataflow-Modell (Akidau und Kollegen, VLDB 2015).
Das erste ist der Unterschied zwischen Ereigniszeit, wann etwas tatsächlich geschah, und Verarbeitungszeit, wann das System es beobachtet. Sie weichen voneinander ab wegen Netzwerkverzögerungen, Wiederholungen, Batching und Geräten, die offline gehen: Das Smartphone eines Kuriers im Aufzug erfasst eine Übergabe um 19:03, liefert das Event aber um 19:13 aus. Jedes Ergebnis, das die Wirklichkeit abbilden soll (Bestellungen pro fünf Minuten, durchschnittliche Lieferzeit pro Stunde), muss nach Ereigniszeit berechnet werden, sonst verschiebt es sich, sobald die Pipeline langsam ist, und ist beim erneuten Abspielen falsch.
Das zweite sind Fenster, die einen unbegrenzten Stream zum Aggregieren in endliche Stücke schneiden: Tumbling-Fenster sind fest und überlappen nicht (alle fünf Minuten), Sliding-Fenster überlappen (die letzten zehn Minuten, jede Minute aktualisiert), und Session-Fenster gruppieren Aktivitätsschübe pro Schlüssel, getrennt durch eine Lücke der Inaktivität (die Browsing-Sitzung eines Kunden).
Das dritte ist die Watermark: die mitlaufende Schätzung des Prozessors, dass alle Events bis zu einer bestimmten Ereigniszeit wahrscheinlich eingetroffen sind. Wenn die Watermark das Ende eines Fensters überschreitet, kann das Ergebnis des Fensters ausgegeben werden. Watermarks sind Heuristiken, daher treffen manche Events trotzdem ein, nachdem ihr Fenster geschlossen wurde. Die Pipeline braucht eine ausdrückliche Regel für solche verspäteten Daten: verwerfen, an eine Nebenausgabe zur späteren Korrektur senden oder Fenster für eine erlaubte Verspätung offen halten und aktualisierte Ergebnisse ausgeben. Längeres Warten liefert vollständigere Antworten, früheres Ausgeben aktuellere. Diese Abwägung zwischen Latenz und Vollständigkeit ist die Stream-Processing-Variante einer Abwägung zwischen Qualitätsmerkmalen und sollte mit dem Fachbereich entschieden werden.
Ereigniszeit, Fenster und ein verspätetes Event
Lambda- und Kappa-Architektur
Wie sollten Batch- und Streaming-Ergebnisse kombiniert werden? Nathan Marz’ Essay How to beat the CAP theorem
von 2011 beschrieb, was als Lambda-Architektur bekannt wurde: Ein unveränderlicher Master-Datenbestand speist einen Batch-Layer, der periodisch aus allen Daten genaue Sichten neu berechnet, und einen Speed-Layer, der in Echtzeit näherungsweise Sichten auf aktuelle Daten berechnet; Abfragen führen beide zusammen, und jeder Batch-Lauf ersetzt die Näherungen des Speed-Layers. Lambda bietet Genauigkeit und niedrige Latenz, und der Batch-Layer dient als Sicherheitsnetz für Streaming-Fehler. Der Preis ist, dass dieselbe Logik in zwei verschiedenen Frameworks geschrieben und identisch gehalten werden muss.
2014 stellte Jay Kreps, einer der Schöpfer von Apache Kafka, diesen Entwurf infrage und schlug die Kappa-Architektur vor, ein Name, den er halb im Scherz anbot. Nutzen Sie nur einen Stream-Prozessor und bewahren Sie die Eingabe lange genug in einem Log auf, um sie erneut abzuspielen. Um die Logik zu ändern, starten Sie eine zweite Instanz des neuen Jobs, die vom Anfang des Logs in eine neue Ausgabetabelle liest, und stellen die Leser darauf um, sobald sie aufgeholt hat. Eine Codebasis, und Neuverarbeitung ist einfach erneutes Abspielen. Kappa setzt eine lange Log-Aufbewahrung voraus und Stream-Prozessoren, die Ereigniszeit und Zustand zuverlässig korrekt behandeln, was moderne Engines leisten. Heute neigen die meisten neuen Entwürfe zu Streaming im Kappa-Stil mit einem Lakehouse für die Historie, während Entwürfe im Lambda-Stil dort fortbestehen, wo die Batch-Neuberechnung über sehr lange Historien günstiger ist oder wo bestehenden Batch-Pipelines vertraut wird.
Lambda und Kappa nebeneinander
Data Mesh: Hoheit über analytische Daten
Als Organisationen wuchsen, wurden zentrale Datenteams zu Engpässen: Jede neue Quelle und jede neue Frage stand in der Warteschlange hinter einem Team, das weder die Quellsysteme noch die fachlichen Fragen besonders gut verstand. 2019 schlug Zhamak Dehghani, damals bei Thoughtworks, das Data Mesh vor (später ausgebaut in ihrem Buch Data Mesh von 2022). Es überträgt auf analytische Daten dieselbe Dezentralisierung, die Microservices auf operative Systeme übertragen haben, und beruht auf vier Prinzipien.
Fachliche Datenhoheit: Die Teams, die den Daten am nächsten sind, etwa Bestellungen, Zahlungen oder Kuriere, besitzen und bereitstellen ihre analytischen Daten, so wie sie ihre Services besitzen. Daten als Produkt: Jedes Team veröffentlicht Datenprodukte, die auffindbar, dokumentiert, vertrauenswürdig, adressierbar und sicher sind, mit einem Verantwortlichen und Qualitätszielen, und behandelt andere Teams als Kunden. Self-Service-Datenplattform: Ein Plattformteam stellt Speicher, Pipelines, Katalog und Zugriffskontrolle bereit, die das Veröffentlichen eines Datenprodukts günstig machen, sodass nicht jede Domäne sie neu erfindet. Föderierte, automatisierte Governance (Federated Computational Governance): Globale Regeln (Kennungen, Datenschutzklassifizierungen, Interoperabilitätsstandards) werden gemeinsam vereinbart und von der Plattform automatisch durchgesetzt statt von einem zentralen Prüfgremium.
Data Mesh ist ebenso sehr ein Organisationsdesign wie eine Architektur, und die Meinungen darüber, wann es sich lohnt, gehen auseinander. Seine Befürworter verweisen auf die Skalierung: Es beseitigt den zentralen Engpass und verankert Datenqualität dort, wo das Wissen ist. Seine Kritiker weisen darauf hin, dass es reife Fachteams, eine starke Plattform und echte Investitionen braucht und dass kleinere Organisationen meist mit einer gut geführten zentralen Plattform und klarer Verantwortung für jeden Datenbestand besser bedient sind. Das Gesetz von Conway (Abschnitt 3.7) gilt unmittelbar: Die Datenarchitektur wird die Struktur widerspiegeln, die die Organisation tatsächlich annimmt.
Qualität, Lineage, Kataloge und Datenschutz
Analytische Daten sind nur nützlich, wenn man ihnen vertraut. Prüfungen der Datenqualität laufen innerhalb der Pipelines und testen Aktualität (ist die heutige Ladung angekommen?), Volumen (hat sich die Zeilenzahl halbiert?), Schema (hat eine Spalte ihren Typ geändert?), Gültigkeit (sind Beträge positiv und Postleitzahlen wohlgeformt?) und Eindeutigkeit. Fehlgeschlagene Prüfungen sollten eine Pipeline anhalten oder Daten in Quarantäne stellen, statt sie unbemerkt zu veröffentlichen. Data Lineage hält fest, woher jeder Datenbestand stammt und welche Transformationen ihn erzeugt haben, sodass Sie, wenn eine Zahl falsch aussieht oder sich ein Quellschema ändert, die Auswirkungen vor- und nachgelagert verfolgen können; die Spezifikation OpenLineage standardisiert, wie Pipelines sie melden. Ein Datenkatalog macht Datenbestände auffindbar, mit Beschreibungen, Verantwortlichen, Klassifizierungen und Lineage an einem Ort.
Analyseplattformen bündeln Daten, was sie für Angreifer attraktiv und datenschutzrechtlich riskant macht. Wenden Sie Datenminimierung an (kopieren Sie keine personenbezogenen Felder, die keine Analyse braucht), pseudonymisieren Sie Kennungen, wo möglich, klassifizieren Sie Spalten, damit Zugriffsrichtlinien den Daten folgen, setzen Sie Aufbewahrungsfristen mit automatischer Löschung durch und stellen Sie sicher, dass Löschanträge den Data Lake und das Data Warehouse ebenso erreichen wie die operativen Systeme; Open Table Formats helfen dabei, weil sie Löschungen auf Zeilenebene unterstützen. Abschnitt 8.7 behandelt die Pflichten im Detail.
Prüfen Sie Ihr Verständnis
Warum ist es eine schlechte Idee, einen Umsatzbericht über zwei Jahre gegen die Checkout-Datenbank laufen zu lassen?
Der Bericht durchsucht Millionen Zeilen und konkurriert um Festplatte, Arbeitsspeicher und CPU mit den kleinen, latenzempfindlichen Transaktionen, die der Checkout braucht, und das normalisierte Schema macht die Abfrage komplex und langsam.
Welche Entscheidung verlangt Kimballs Methode beim Entwurf einer Faktentabelle als Erstes?
Die Granularität zu deklarieren: genau festzulegen, was eine Zeile darstellt, etwa ein Gericht einer gelieferten Bestellung.
Ein Stream-Job zählt Bestellungen pro Minute nach Verarbeitungszeit. Was passiert, wenn er zehn Minuten zurückfällt und dann aufholt?
Bestellungen werden in den Minuten gezählt, in denen sie verarbeitet wurden, statt in denen sie geschahen; die Zahlen sind also falsch, mit einem Einbruch und danach einer Spitze; Berechnen nach Ereigniszeit vermeidet das.
Wie geht die Kappa-Architektur mit einer Änderung der Verarbeitungslogik um?
Sie lässt die neue Version des Stream-Jobs vom Anfang des aufbewahrten Logs in eine neue Ausgabe laufen, stellt die Leser darauf um, sobald sie aufgeholt hat, und nimmt den alten Job außer Betrieb.
Quellen und weiterführende Literatur
Haben Sie eine Frage zu diesem Abschnitt? ArchitectBot, der KI-Lernassistent des Kurses, antwortet zuerst aus dem Kurs.
Fragen: „Unsere Analysten fragen direkt die Produktionsdatenbank ab und bremsen den Checkout. Wie sähe eine sinnvolle erste Analytics-Architektur für ein Unternehmen unserer Größe aus?“