Reply To: [Dyskusja] [Baza wiedzy] Parquet vs Delta – co i kiedy wybierać ?

  • Jan Czuma

    Member
    2024-11-04 at 20:28
    24 Punkty

    Hej
    Grubszy temat, nad którym warto spędzić trochę więcej czasu, ale postaram się zacząć z mojej strony na szybko.
    Na start powiem, że będę pisał w oderwaniu od technologii Azurowych, więc w połączeniu dajmy na to z Synapsem może się okazać, że są jeszcze inne ważne czynniki, które warto wziąć pod uwagę.
    Do porównania dodałbym Iceberga jako bezpośredniego konkurenta Delty. Jeśli nie miałeś z Icebergiem styczności, polecam bo ma kilka fajnych ficzerów i dla mnie osobiście był bardziej intuicyjny niż Delta na start. Warto wspomnieć, że Databricksy kupiły jakiś czas temu startup Tabular, który zajmuje się komercyjnym wsparciem dla Iceberga i z tego co wiem nie planują go ubijać, wręcz przeciwnie.

    Tak zupełnie na szybko w temacie Delty. Myślę, że trzeba sobie zadać pytanie co Delta daje jako, że jest to poniekąd dodatkowa warstwa na Parquetcie. Z takich pierwszych oczywistości:

    1. ACID – choć w świecie Big Data często nie zwraca się na to uwagi, to jednak coraz częściej możliwość zapewnienia transakcji jest kluczowa.
    2. “Podróże w czasie” – czyli generalnie pewna forma wersjonowania danych, co często jest kluczowe. Dodatkowo ułatwia to zarządzanie kwestiami związanymi z retencją danych kiedy chcemy np. usuwać dane z konkretnego okresu przy jednoczesnym optymalizowaniu wielkości i ilości plików pod zapytania.
    3. “Schema evolution” – o ile z tego co wiem Parquet wspiera, to z tego co kojarzę Delta (i Iceberg) zarządzają ewolucją schemy również na innym poziomie co ułatwia ogarnianie całości.

    Jednak to co wg mnie jest naprawdę wartością dodaną to indeks, który zarówno Delta, jak i Iceberg tworzą. Robią to na warstwie metadanych, więc jest dosyć szybki dostęp do nich. Z grubsza w wydaniu Iceberga (ale Delty raczej też, tylko już nie kojarzę detali) polega to na wyliczaniu statystyk w stylu np. min., max. wartości dla poszczególnych kolumn dla konkretnego pliku. Dzięki temu jak odpytujemy tabele w Delta/Iceberg to cały zbiór plików zawężany jest tylko do tych, które zawierają dane wartości. Ogólnie tak jak pisałem – taka forma indeksu.

    Oczywiście minusem Delty/Iceberga jest pewien narzut, który dodają swoją obecnością przez co jest dodatkowa warstwa, którą trzeba zarządzać, utrzymywać (a po X miesiącach/latach jest co utrzymywać), ale też dostarczają pewne narzędzia, żeby to ogarniać w miarę sensownie.