Przenosząc rozwiązanie hurtowni danych do chmury, masz gotowy ból głowy.
Jak się odnaleźć w nowym środowisku? Jak dostarczyć tam dane? Jaką usługę wybrać? Jak przechowywać dane? Jak przetwarzać dane? Jak ustawić model dostępu do danych?
I jeszcze jedno wielkie pytanie:
Jak nie zbankrutować?
W niektórych przypadkach rozwiązaniem jest zwinna hurtownia danych.
Zwinna hurtownia danych to taka, która nie opiera się o bazę danych. Dane przechowuje w systemie plików, może to być na przykład Data Lake w chmurze (np. Azure Data Lake Gen 2 [nazewnictwo aktualne na kwiecień 2022]).
Zdecydowaną zaletą takiego rozwiązania jest niska cena.
Jak określić, czy taka hurtownia będzie dobra właśnie dla Ciebie?
Zwinna hurtownia danych - spojrzenie z lotu ptaka
Wyobraź sobie hurtowanie danych. Integrujesz wiele systemów źródłowych i prezentujesz potem spójny obraz rzeczywistości.
W tym scenariuszu hurtownia jest niewielka. Jej rozmiar nie przekracza kilku gigabytów.
Dodatkowo, nie masz wymagania na przechowywanie historii, to co prezentujesz to stan bieżący. Integrujesz dane ale prezentujesz tylko to, co teraz jest w systemach źródłowych.
Taką hurtownie można tworzyć każdego dnia od początku. To zawsze może być truncate i insert load. Usuwasz wszystkie dane i ładujesz je od nowa.
Oczywiście takie podejście przewiduje stosowanie warstw w hurtowni danych: dla łatwiejszego zarządzania i na potrzeby późniejszych zmian.
Zapytasz: a co z konsumentami danych? Dane z hurtowni pobierane są tylko po odświeżeniu danych. Konsumenci to raport, które potrzebują danych raz dziennie i przez maksymalnie 1h pobierają dane z hurtowni.
Czy też zadajesz sobie pytanie: czy w tym przypadku potrzeba jest baza danych?
Czy może wystarczy dane przechowywać w plikach np. w Azure na Data Lake Gen 2.
Jeżeli masz podobny przypadek i nie potrzebujesz bazy danych do przechowaywania danych w hurtowni, wtedy zwinna hurtownia danych może być rozwiązaniem dla Ciebie.
Architektura wirtualnej hurtowni danych
Dla ustalenia uwagi tworzymy naszą wirtualną hurtownie w Azure w oparciu o usługi dostępne na kwiecień 2022.
Dane źródłowe - dane ustrukturyzowane, pochodzące z wielu systemów
Landing Zone - dane przesłane przez systemy źródłowe do Azure Blob Storage albo Azure Data Lake Gen 2 lub pobrane przy pomocy Azure Pipelines do landing zone. Optymalniej kosztowo z punktu widzenia hurtowni danych będzie, gdy systemu źródłowe umieszczą pliku w chmurze.
ETL / przetwarzanie - Apache Spark Pool, jako natywna usługa Azure wygrywa w konkurencji kosztowej z Data Bricks. Podobno jest wolniejsza niż Data Bricks, ale przy tworzeniu tej hurtowni ważne są koszty a nie szybkość. Dodatkowo wolumeny danych są na tyle małe, że przetwarzanie w 5 albo 30 minut nie ma wielkiego znaczenia.
Gold layer - przetworzone dane lądują z powrotem w Azure Data Lake Gen 2. Zapisanie danych w formacie parquet zmniejsza rozmiar pliku w porównaniu np. do CSV. Mniej danych do przechowywania to mniejsze koszty.
Dashboardy - to już nie jest poziom hurtowni danych. Ale mając na uwadze kompletność rozwiązania uzupełnię ten element układanki umieszczając tutaj Power Bi. Power Bi bez problemu łączy się z Data Lakiem i czyta przygotowane dla niego pliki parquet.
Zwinna hurtownie danych - za i przeciw
Za:
Koszty - największą część ceny płacisz za compute w Apache Spark Pool, czyli przetwarzanie generuje najwięcej kosztów. Storage stanowi marginalną część.
Lekkie rozwiązanie - w oparciu głownie o dwie usługi Azure. Wymaga tylko specjalisty znającego się na Apache Spark Pool.
Utrzymanie - rozwiązanie łatwe do zmiany, zmiana struktury danych wynikowych to tylko zmiana w Spark'u.
Zwinna hurtownia w oparciu o pliki parquet - ogranicza koszty przechowywania, takie pliki są mniejsze niż CSV.
Integracja z Power BI - Format parquet jest też łatwo czytany przez Power BI.
Przeciw:
Wymuszanie typów - jest tylko na poziomie przetwarzania w Apache Spark Pool.
Szybkość - To rozwiązanie nie jest szybkie. Jeżeli potrzebujesz rozwiązanie dostępnego 24h na dobę z dobrą wydajnością wtedy będziesz patrzył w stronę bazy danych jako magazynu na Twoje dane.
Użyteczność - jeżeli na potrzeby analizy chcesz połączyć dwa wynikowe pliki znowu wracasz do Apache Spark Pool i w notebooku analizujesz dane.
Czy zwinna hurtownia danych to dobry pomysł?
Czy zwinna hurtownia danych to dobry pomysł?
Tworzysz POC albo MVP? I potem będziesz przygotowywał większe rozwiązanie? Tworzysz rozwiązanie dla klienta z małym budżetem ale z perspektywami na rozwój? Rozwiązanie ma być łatwe do zmiany i utrzymania?
Dodatkowo, jeżeli koszty są ważnym elementem decyzji, to zdecydowanie jest to ścieżka dla Ciebie.
Większość kosztów, rozwiązaniu prezentowanym powyżej, będą związane z przetwarzaniem (wykorzystanie Apache Spark Pools).
Koszty przechowywania surowych i przetworzonych danych będą marginalne.
Analiza wynikowych danych też nie jest tak prosta jak w przypadku bazy danych. Jeżeli analizujesz te dane w Apache Spark nototebooks, to też nie jest rocket science. Wymaga tylko nauki innego sposobu odpytywania danych. Można też prowadzić analizę w Power BI.
Jeżeli zależy Ci na szybkości i przetwarzasz duże wolumeny danych, to nie jest rozwiązanie dla Ciebie.
To nie jest wyczerpanie tematu. Daj znać, jeżeli chcesz wiedzieć więcej.
Chcesz ograniczyć koszty swojego rozwiązania, w chmurze? Daj znać.
Ps. Oceniając zwinną hurtownię danych z perspektywy żelaznego trójkąta zarządzania (management triagle), pomysł przedstawiony powyżej wpisuję się w kategorię good and cheap. Przygotowaliśmy dane dobrej jakości i to przygotowaliśmy je tanio ale to już rozważanie na inny wpis.
Ps2. Referencyjna architektura proponowana przez Microsoft:
https://docs.microsoft.com/pl-pl/azure/architecture/solution-ideas/articles/enterprise-data-warehouse