Welche Mechanismen nutzt Apache Iceberg, um Snapshot-Isolation und ACID-Transaktionen auf S3 zu gewährleisten?

Apache Iceberg realisiert Snapshot-Isolation und ACID-Transaktionen durch eine hierarchische Metadatenstruktur, die den Zustand einer Tabelle zu einem exakten Zeitpunkt fixiert. Da S3 ein Objekt-Speicher ist und keine nativen Transaktionen oder atomaren Datei-Umbenennungen unterstützt, verlagert Iceberg die Zustandsverwaltung in eine Metadaten-Hierarchie und einen externen Katalog.

Die Architektur gliedert sich in folgende Ebenen:

EbeneFunktion
CatalogSpeichert den Pointer auf die aktuell gültige metadata.json-Datei.
Metadata FileDefiniert den aktuellen Snapshot, Tabelleneigenschaften und die Historie.
Manifest ListListet alle Manifest-Dateien auf, die zu einem spezifischen Snapshot gehören.
Manifest FileEnthält die Liste der tatsächlichen Datendateien (z. B. Parquet) inklusive Statistiken.

Snapshot-Isolation wird dadurch erreicht, dass Leser immer auf die Metadaten-Datei zugreifen, die zum Zeitpunkt des Startens der Abfrage im Katalog als "aktuell" markiert war. Während ein Schreibvorgang neue Daten- und Metadaten-Dateien auf S3 schreibt, bleiben die bestehenden Dateien für aktive Leser unverändert.

ACID-Transaktionen werden über Optimistic Concurrency Control (OCC) gesteuert. Ein Schreibvorgang folgt diesem Prozess:

  1. Auslesen des aktuellen Snapshot-Pointers aus dem Katalog.
  2. Erstellung neuer Daten- und Metadaten-Dateien auf S3.
  3. Versuch, den Pointer im Katalog atomar auf die neue Metadaten-Datei zu aktualisieren.

Schlägt dieser atomare Wechsel fehl – etwa weil ein anderer Prozess den Pointer bereits aktualisiert hat –, prüft Iceberg, ob die Änderungen kollidieren. Falls keine Überschneidungen vorliegen, wird der Vorgang automatisch wiederholt. Diese Entkopplung von Daten und Metadaten ermöglicht es uns, im Rahmen unserer IT-Consulting & Digitale Strategie hochskalierbare Data Lakes auf S3 zu implementieren, ohne auf proprietäre Dateisysteme angewiesen zu sein.

Wir empfehlen den Einsatz von Apache Iceberg gegenüber klassischen Hive-Tabellen immer dann, wenn konsistente Concurrent-Writes und Time-Travel-Abfragen gefordert sind, da die manuelle Verwaltung auf Dateiebene bei steigender Datenmenge technisch nicht mehr beherrschbar ist.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt