🎯 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
Funkcja | Opis |
---|---|
ACID Transactions | Gwarantuje spójność danych w warunkach współbieżnego dostępu. |
Upsert (MERGE) | Możliwość aktualizacji i scalania rekordów bez pełnego nadpisu. |
Time Travel | Możliwość przeglądania danych z przeszłości. |
Schema Enforcement | Walidacja struktury danych przy zapisie. |
Unified Batch/Streaming | Wsparcie 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
- https://delta.io/
- https://www.databricks.com/discover/delta-lake
- https://docs.databricks.com/delta/index.html
👽 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
lubTIMESTAMP 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