Budowa Hurtowni Danych i Jeziora Danych w AWS

Magazyn danych, jezioro danych, a może dom nad jeziorem? Jeśli te terminy nie są Ci obce, prawdopodobnie Twoja praca w mniejszym lub większym stopniu wiąże się z analizą danych.

W obecnych czasach, gdy niemal każda dziedzina życia generuje ogromne ilości informacji, trudno sobie wyobrazić, by Twoja działalność nie była w jakiś sposób z nimi powiązana. Jak to często podkreślają liderzy firm, żyjemy w erze:

  • Przedsiębiorstw kierowanych danymi i opierających na nich swoje decyzje.
  • Dostępności danych niezależnie od miejsca i czasu.

Najcenniejszy składnik

Wiele wskazuje na to, że dane stały się kluczowym zasobem dla coraz większej liczby organizacji. Pamiętam czasy, gdy duże korporacje wytwarzały ogromne ilości danych – terabajty co miesiąc. To było jeszcze kilkanaście lat temu. Dziś generowanie tak dużych zbiorów danych zajmuje zaledwie kilka dni. Można się zastanawiać, czy każda informacja jest naprawdę niezbędna i czy każda z nich przyniesie komuś korzyść. Odpowiedź jest oczywista – nie zawsze. 😃

Nie wszystkie dane są przydatne, a niektóre z nich nigdy nie zostaną wykorzystane. Często byłem świadkiem sytuacji, gdy firmy generowały i ładowały do systemów ogromne ilości informacji, które ostatecznie okazywały się zbędne.

Na szczęście to już przeszłość. Magazynowanie danych, zwłaszcza w chmurze, stało się tanie, a liczba źródeł danych rośnie w zawrotnym tempie. Nikt nie jest w stanie przewidzieć, jakie informacje będą potrzebne za rok, gdy dojdą nowe usługi. Nawet starsze dane mogą okazać się nieocenione.

Dlatego aktualna strategia polega na przechowywaniu możliwie jak największej ilości danych, ale w taki sposób, aby były one łatwo dostępne. Dzięki temu można je nie tylko skutecznie zapisywać, ale również przeszukiwać, ponownie wykorzystywać oraz transformować i rozpowszechniać.

Przyjrzyjmy się trzem rozwiązaniom oferowanym przez AWS, które pomagają osiągnąć te cele:

  • Athena – niedroga i efektywna, choć prosta usługa do tworzenia jezior danych w chmurze.
  • Redshift – rozbudowana hurtownia danych w chmurze, która może zastąpić tradycyjne rozwiązania, choć może mieć trudności z nadążaniem za wykładniczym wzrostem danych.
  • Databricks – połączenie jeziora danych i hurtowni danych w jedno rozwiązanie, z dodatkowymi korzyściami.

Jezioro Danych w AWS Athena

Źródło: aws.amazon.com

Jezioro danych to miejsce, gdzie szybko przechowujemy napływające informacje w różnej formie: nieustrukturyzowanej, częściowo ustrukturyzowanej lub ustrukturyzowanej. Nie przewidujemy, by te dane miały być modyfikowane po zapisaniu. Zależy nam na tym, by były jak najbardziej atomowe i niezmienne. Tylko to gwarantuje ich ponowne wykorzystanie w przyszłości. Utrata atomowości danych zaraz po pierwszym załadowaniu do jeziora danych, uniemożliwia odzyskanie utraconych informacji.

AWS Athena to baza danych, której dane przechowywane są bezpośrednio w zasobnikach S3 i która nie wymaga działania klastrów serwerów w tle. To sprawia, że jest to naprawdę tania usługa typu data lake. Ustrukturyzowane formaty plików, takie jak Parquet lub CSV, umożliwiają zachowanie porządku w danych. Zasobnik S3 przechowuje pliki, a Athena odwołuje się do nich za każdym razem, gdy procesy pobierają dane z bazy.

Athena nie obsługuje niektórych standardowych funkcji, jak np. aktualizacja danych. Należy ją traktować jako bardzo prostą opcję. Z drugiej strony, brak możliwości modyfikacji danych w jeziorze danych, chroni jego atomową właściwość. 😐

Usługa obsługuje indeksowanie i partycjonowanie, co ułatwia efektywne wykonywanie zapytań i tworzenie logicznie oddzielnych porcji danych (np. według dat lub kluczowych kolumn). Łatwo ją też skalować, wystarczy dodawać nowe zasobniki do infrastruktury.

Zalety i wady

Do zalet należy:

  • Niski koszt (składają się na niego tylko segmenty S3 i opłata za używanie SQL). To największa zaleta Atheny. Jeśli szukasz niedrogiego sposobu na zbudowanie jeziora danych w AWS, to jest to właśnie to.
  • Łatwa integracja z innymi usługami AWS, jak Amazon QuickSight (wizualizacja danych) lub AWS Glue Data Catalog (tworzenie trwałych metadanych).
  • Idealna do uruchamiania doraźnych zapytań na dużych zbiorach ustrukturyzowanych lub nieustrukturyzowanych danych, bez konieczności utrzymywania całej infrastruktury.

Do wad należy:

  • Athena nie jest szczególnie wydajna w przypadku złożonych zapytań, zwłaszcza jeśli nie są one zgodne z modelem danych.
  • Niska elastyczność w przypadku potencjalnych zmian w modelu danych w przyszłości.
  • Brak zaawansowanych funkcji. Jeśli chcesz, aby coś było częścią usługi, musisz to samodzielnie zaimplementować.
  • Jeśli planujesz wykorzystywać dane z jeziora danych w bardziej zaawansowanej warstwie prezentacji, często jedynym rozwiązaniem jest połączenie ich z inną usługą bazodanową, jak AWS Aurora lub AWS Dynamo DB.

Cel i praktyczne zastosowanie

Wybierz Athenę, jeśli chcesz stworzyć proste jezioro danych bez zaawansowanych funkcji charakterystycznych dla hurtowni danych. Sprawdzi się, jeśli nie oczekujesz wysoce wydajnych zapytań analitycznych, uruchamianych regularnie w jeziorze danych. Priorytetem jest posiadanie niezmiennej puli danych z możliwością łatwego rozszerzenia przestrzeni dyskowej.

Nie musisz się już martwić brakiem miejsca. Koszty magazynowania w zasobnikach S3 można dodatkowo obniżyć, stosując politykę cyklu życia danych. Polega ona na przenoszeniu danych między różnymi typami segmentów S3, zorientowanymi bardziej na archiwizację z wolniejszym czasem dostępu, ale niższymi kosztami.

Wspaniałą cechą Atheny jest automatyczne tworzenie pliku z danymi, które stanowią wynik zapytania SQL. Możesz wykorzystać go w dowolnym celu. To dobre rozwiązanie, jeśli masz wiele usług Lambda, które przetwarzają dane w wielu krokach. Każdy wynik działania Lambdy będzie wynikiem w ustrukturyzowanym formacie, gotowym do dalszego przetwarzania.

Athena to dobra opcja w sytuacjach, gdy do Twojej infrastruktury chmurowej trafia duża ilość nieprzetworzonych danych, które nie muszą być przetwarzane w momencie ładowania. Wszystko, czego potrzebujesz, to szybkie przechowywanie w chmurze w łatwej do zrozumienia strukturze.

Innym przypadkiem użycia może być stworzenie dedykowanej przestrzeni do archiwizacji danych dla innego serwisu. Wtedy Athena DB stanie się tanim miejscem na kopie zapasowe wszystkich danych, których aktualnie nie potrzebujesz, ale które mogą przydać się w przyszłości. W takim przypadku po prostu załadujesz dane i wyślesz je dalej.

Hurtownia Danych w AWS Redshift

Źródło: aws.amazon.com

Hurtownia danych to miejsce, w którym dane są przechowywane w bardzo uporządkowany sposób. Łatwo je załadować i pobrać. Umożliwia uruchamianie dużej liczby złożonych zapytań, łączących wiele tabel. Dostępnych jest wiele funkcji analitycznych, które pozwalają na obliczanie różnych statystyk. Celem jest wyodrębnienie przyszłych prognoz i trendów na podstawie istniejących danych.

Redshift to w pełni funkcjonalny system hurtowni danych. Posiada klastry serwerów do dostrajania i skalowania, oraz system przechowywania danych zoptymalizowany pod kątem szybkiego zwracania wyników złożonych zapytań. Obecnie Redshift można uruchomić również w trybie bezserwerowym. Nie ma tutaj żadnych plików S3. Jest to standardowy serwer klastra bazy danych z własnym formatem przechowywania danych.

Ma wbudowane narzędzia do monitorowania wydajności, które pozwalają na dostosowanie działania do konkretnego zastosowania. Zarządzanie jest dostępne z poziomu specjalnych pulpitów nawigacyjnych. Zrozumienie wszystkich funkcji i ustawień oraz ich wpływu na klaster wymaga pewnego wysiłku. Jednak nie jest to tak skomplikowane, jak administrowanie serwerami Oracle w tradycyjnych rozwiązaniach.

W Redshift obowiązują limity AWS, które wyznaczają pewne ograniczenia w codziennym użytkowaniu (np. limit jednoczesnych użytkowników lub sesji w jednym klastrze bazy). Szybkość wykonywania operacji w pewnym stopniu pomaga je ominąć.

Zalety i wady

Do zalet należą:

  • Natywna usługa hurtowni danych w chmurze AWS, łatwa do zintegrowania z innymi usługami.
  • Centralne miejsce do przechowywania, monitorowania i pozyskiwania różnych typów źródeł danych z różnych systemów.
  • Możliwość uruchomienia bezserwerowej hurtowni danych, bez konieczności zarządzania infrastrukturą.
  • Optymalizacja pod kątem wydajnych analiz i raportów. W przeciwieństwie do rozwiązań data lake, Redshift wykorzystuje relacyjny model danych do przechowywania wszystkich napływających danych.
  • Silnik bazy danych Redshift opiera się na PostgreSQL, co zapewnia wysoką kompatybilność z innymi systemami bazodanowymi.
  • Przydatne instrukcje COPY i UNLOAD do ładowania i rozładowywania danych z i do zasobników S3.

Do wad należą:

  • Ograniczona liczba jednoczesnych aktywnych sesji. Sesje będą zawieszane i przetwarzane sekwencyjnie. Chociaż w większości przypadków nie stanowi to problemu (operacje są szybkie), może to być ograniczeniem w systemach z wieloma użytkownikami.
  • Mimo że Redshift obsługuje wiele funkcji znanych z systemów Oracle, nadal nie jest na tym samym poziomie. Niektóre oczekiwane funkcje mogą nie istnieć (np. wyzwalacze DB), lub mogą być obsługiwane w ograniczonej formie (np. zmaterializowane widoki).
  • W przypadku bardziej zaawansowanych zadań przetwarzania danych, musisz je tworzyć od podstaw, najczęściej używając języka Python lub JavaScript. Nie jest to tak naturalne, jak PL/SQL w systemie Oracle, gdzie nawet funkcje i procedury wykorzystują język bardzo podobny do zapytań SQL.

Cel i praktyczne zastosowanie

Redshift może być Twoim centralnym magazynem danych dla różnych źródeł, które wcześniej znajdowały się poza chmurą. Stanowi ważne zastępstwo dla wcześniejszych rozwiązań hurtowni danych opartych na Oracle. Ponieważ jest to jednocześnie relacyjna baza danych, migracja z Oracle jest stosunkowo prosta.

Jeśli masz istniejące rozwiązania hurtowni danych w różnych miejscach, które nie są ujednolicone, Redshift jest doskonałym wyborem.

Pozwoli Ci połączyć wszystkie systemy hurtowni danych z różnych lokalizacji pod jednym dachem. Możesz je oddzielić według kraju, aby dane pozostały bezpieczne i dostępne tylko dla tych, którzy ich potrzebują. Jednocześnie zbudujesz jednolite rozwiązanie magazynowe obejmujące wszystkie dane firmy.

Innym przypadkiem jest sytuacja, w której celem jest zbudowanie platformy hurtowni danych z rozbudowaną samoobsługą. Zestaw narzędzi do przetwarzania danych mogą tworzyć poszczególni użytkownicy systemu. Usługi będą dostępne tylko dla twórcy lub grupy osób, przez niego zdefiniowanej. Nie wpłynie to na pozostałych użytkowników.

Sprawdź nasze porównanie między Datalake i Datawarehouse.

Lakehouse w Databricks na AWS

Źródło: databricks.com

Lakehouse to termin, który jest mocno powiązany z usługą Databricks. Mimo że nie jest to natywna usługa AWS, bardzo dobrze działa w ekosystemie AWS i zapewnia różne opcje łączenia z innymi usługami AWS.

Databricks ma na celu połączenie ze sobą (wcześniej) bardzo różnych obszarów:

  • Rozwiązanie do przechowywania danych typu data lake danych nieustrukturyzowanych, częściowo ustrukturyzowanych i ustrukturyzowanych.
  • Rozwiązanie dla ustrukturyzowanych hurtowni danych i szybkiego dostępu do danych (Delta Lake).
  • Rozwiązanie wspierające analitykę i przetwarzanie danych oparte na uczeniu maszynowym.
  • Zarządzanie danymi we wszystkich powyższych obszarach, ze scentralizowaną administracją i gotowymi narzędziami wspierającymi produktywność różnych typów użytkowników.

Jest to wspólna platforma, z której mogą korzystać inżynierowie danych, programiści SQL i naukowcy zajmujący się uczeniem maszynowym. Każda z grup dysponuje zestawem narzędzi, które pomagają im w pracy.

Databricks stara się połączyć zalety jeziora danych i hurtowni danych w jednym rozwiązaniu. Dodatkowo zapewnia narzędzia do testowania i uruchamiania modeli uczenia maszynowego bezpośrednio na utworzonych magazynach danych.

Zalety i wady

Do zalet należą:

  • Databricks to wysoce skalowalna platforma. Skaluje się w zależności od obciążenia, nawet automatycznie.
  • Jest to środowisko współpracy dla analityków danych, inżynierów danych i analityków biznesowych. Możliwość pracy w tej samej przestrzeni jest wielką zaletą, nie tylko z perspektywy organizacyjnej, ale i finansowej (koszty oddzielnych środowisk są wyższe).
  • AWS Databricks bezproblemowo integruje się z innymi usługami AWS, jak Amazon S3, Amazon Redshift i Amazon EMR. Umożliwia to łatwe przenoszenie danych między usługami i korzystanie z pełnego zakresu usług chmurowych AWS.

Do wad należą:

  • Databricks może być trudny w konfiguracji i zarządzaniu, zwłaszcza dla osób początkujących w przetwarzaniu dużych zbiorów danych. Wykorzystanie platformy w pełni, wymaga dużej wiedzy technicznej.
  • Mimo, że Databricks jest opłacalny w modelu „pay-as-you-go”, koszty mogą szybko wzrosnąć w przypadku projektów przetwarzania danych na dużą skalę.
  • Databricks zapewnia szereg gotowych narzędzi i szablonów, ale to może być również ograniczeniem dla użytkowników, którzy potrzebują większej elastyczności. Platforma nie jest odpowiednia dla osób wymagających dużej kontroli nad przepływami pracy przetwarzania danych.

Cel i praktyczne zastosowanie

AWS Databricks najlepiej nadaje się dla dużych korporacji z bardzo dużą ilością danych. Może być wykorzystany do ładowania i kontekstualizacji różnych źródeł danych z różnych systemów zewnętrznych.

Często wymogiem jest dostarczanie danych w czasie rzeczywistym. Oznacza to, że od momentu pojawienia się danych w systemie źródłowym, procesy powinny natychmiast je pobierać, przetwarzać i przechowywać w Databricks, natychmiast lub z minimalnym opóźnieniem. Jeśli opóźnienie przekracza minutę, uważa się, że przetwarzanie odbywa się w czasie zbliżonym do rzeczywistego. Oba scenariusze są osiągalne dzięki platformie Databricks. Wynika to z dużej liczby adapterów i interfejsów czasu rzeczywistego łączących się z różnymi usługami AWS.

Databricks łatwo integruje się z systemami Informatica ETL. Jeśli organizacja intensywnie korzysta z ekosystemu Informatica, Databricks jest dobrym uzupełnieniem platformy.

Podsumowanie

Wraz z wykładniczym wzrostem ilości danych, dobrze wiedzieć, że istnieją rozwiązania, które efektywnie sobie z tym radzą. To, co kiedyś wymagało ogromu pracy administracyjnej, teraz wymaga jej bardzo niewiele. Zespół może skupić się na tworzeniu wartości z danych.

W zależności od potrzeb, wystarczy wybrać odpowiednią usługę. AWS Databricks jest rozwiązaniem, którego prawdopodobnie będziesz musiał się trzymać po podjęciu decyzji. Inne alternatywy są bardziej elastyczne, nawet jeśli mają mniej możliwości, zwłaszcza w trybie bezserwerowym. Migracja do innego rozwiązania jest stosunkowo łatwa.