🎯 Definicja

Delta Lake to warstwa przechowywania danych typu open-source zaprojektowana do pracy na jeziorach danych (Data Lake), która dodaje funkcjonalności ACID, versioning oraz walidację do plików przechowywanych w formacie Apache Parquet. Umożliwia budowanie architektur typu Lakehouse, łącząc elastyczność data lake z niezawodnością hurtowni danych.

🔑 Kluczowe punkty

  • Umożliwia operacje ACID (Atomicity, Consistency, Isolation, Durability) na zbiorach danych w jeziorze.
  • Przechowuje dane jako pliki Parquet, z dodatkowymi metadanymi śledzącymi transakcje (DeltaLog).
  • Obsługuje time travel — zapytania do danych sprzed określonego punktu w czasie.
  • Integruje się z Apache Spark, Databricks, Presto/Trino, Snowflake i innymi systemami.
  • Umożliwia streaming i batch w ramach jednej tabeli (unifikacja architektury lambda i Kappa).

📚 Szczegółowe wyjaśnienie

Jak działa Delta Lake?

Delta Lake działa jako warstwa nad plikami Parquet w Data Lake (np. na S3, ADLS, GCS). Dodaje system DeltaLog z zapisami metadanych i operacji logicznych. Dzięki temu pozwala na:

  • transakcyjne zapisywanie i odczyt danych,
  • walidację schematu,
  • rollback danych,
  • aktualizacje i upsert (merge) danych.

Przykład integracji PySpark:

df.write.format("delta").mode("append").save("/mnt/raw/delta/events")

Odczyt:

spark.read.format("delta").load("/mnt/raw/delta/events")

Kluczowe funkcjonalności

FunkcjaOpis
ACID TransactionsGwarantuje spójność danych w warunkach współbieżnego dostępu.
Upsert (MERGE)Możliwość aktualizacji i scalania rekordów bez pełnego nadpisu.
Time TravelMożliwość przeglądania danych z przeszłości.
Schema EnforcementWalidacja struktury danych przy zapisie.
Unified Batch/StreamingWsparcie dla danych wsadowych i strumieniowych w jednej tabeli.

Zastosowania praktyczne

  • Budowa data lakehouse — połączenie elastyczności data lakes z niezawodnością DWH.
  • Zasilanie modeli ML – uproszczony dostęp do wersjonowanych danych treningowych.
  • ETL i pipeline’y danych – bezpieczne i spójne przetwarzanie danych wsadowych i streamingowych.
  • Obsługa danych operacyjnych – upserty i bieżące aktualizacje np. statusów systemowych.

💡 Przykład zastosowania

W nowoczesnej platformie e-commerce architektura Lakehouse oparta na Delta Lake pozwala zarówno analitykom biznesowym, jak i zespołom ML, pracować na tym samym źródle danych. Logi transakcyjne są zapisywane jako strumień na bieżąco (streaming), a modele rekomendacyjne są trenowane na migawkach z tygodnia (batch). Dzięki upsertom można łatwo usuwać błędy pobrań danych przy zachowaniu spójności analitycznej.

📌 Źródła

👽 Brudnopis

  • Delta Lake = Parquet + metadane + log transakcji
  • Lakehouse = DataLake + ACID + szybki SQL → unifikacja DW i DL
  • MERGE INTO = upsert bez kosztownego nadpisywania całych plików
  • Time Travel → VERSION AS OF lub TIMESTAMP AS OF
  • Zintegrowane z Spark, Databricks, Iceberg, Presto
  • Alternatywy: Apache Hudi, Apache Iceberg
  • Rozwiązuje problem „plików jako źródło danych” → dodaje transakcyjność i walidację schematu
  • Obsługa Z-ordering, optimize, vacuum dla wydajności i czyszczenia