Jestem leniwym programistą! To był jeden ważny szczegół, którego dowiedziałem się od Roelanta Vosa podczas jego szkolenia w zeszłym tygodniu. Ale było też wiele innych ciekawych tematów. Osobiste podsumowanie 3-dniowych zajęć na temat wzorców projektowych hurtowni danych.
W zeszłym tygodniu miałem okazję uczestniczyć w zajęciach na temat wzorców projektowych hurtowni danych prowadzonych przez Roelanta Vosa. Widziałem Roelanta w prezentacjach na konferencjach poświęconych modelowaniu danych, a także cenię jego blog z wieloma przydatnymi informacjami na temat architektury Hurtowni Danych i implementacji Data Vault. Tak więc, kiedy dostałem informację od moich kolegów z Trivadis, że będzie on prowadził szkolenie w Zurychu, skorzystałem z okazji i dołączyłem do tych 3-dniowych zajęć.
Nie będę pisał szczegółowej recenzji całego kursu w tym wpisie na blogu. Ale w poniższych linijkach znajdziesz kilka uwag na temat trzech tematów, które były – z mojego punktu widzenia – ważne w tym szkoleniu: Pattern Based Design, Persistent Staging Area oraz Virtual Data Warehouse.
Typowa architektura hurtowni danych składa się z wielu warstw służących do ładowania, integrowania i prezentowania informacji biznesowych pochodzących z różnych systemów źródłowych. Liczba i nazwy warstw mogą być różne w każdym systemie, ale w większości środowisk dane są kopiowane z jednej warstwy do drugiej za pomocą narzędzi ETL lub czystych poleceń SQL. Przy dobrej architekturze, wzorce do transformacji i ładowania danych do danej warstwy są zawsze podobne. Ułatwia to (i przyspiesza) tworzenie procesów ETL, ponieważ powtarzalne wzorce mogą być generowane za pomocą narzędzia do automatyzacji hurtowni danych (DWA). Na blogu Roelanta można znaleźć przegląd jego Data Integration Framework. Przykłady kodu są dostępne na GitHubie.
Dlaczego jestem leniwym programistą? Jak wielu innych programistów, nie lubię pisać powtarzającego się kodu. Roelant też jest leniwym programistą. Dlatego też poświęcił wiele czasu na opracowanie narzędzi i metod przyspieszających zadania programistyczne poprzez generowanie kodu SQL do budowy i ładowania hurtowni danych. Podczas kursu wyjaśnił wiele wzorców projektowych za pomocą generatora SQL VDW (Virtual Data Warehouse). Można go pobrać z jego strony za darmo i jest on przydatny do szybkiego tworzenia prototypów i testów regresji zmian wzorca.
Persistent Staging Area
Ważną warstwą w proponowanej architekturze jest PSA (Persistant Staging Area). Chociaż ten obszar warstwy inscenizacji jest opcjonalny, to jest bardzo praktyczny i wysoce zalecany, szczególnie gdy wymagania biznesowe nie są jeszcze sprecyzowane na początku projektu. PSA jest historycznym archiwum danych z systemów źródłowych i zastępuje klasyczny, niestabilny obszar stagingowy. PSA jest ładowany albo za pomocą mechanizmów CDC (Change Data Capture) albo za pomocą detekcji delta pomiędzy systemem źródłowym a aktualną wersją PSA. Persistent Staging Area jest unikalnym źródłem do załadowania tabel Data Vault (Hubs, Links i Satellites) w warstwie Integration Layer.
Zaletą Persistent Staging Area jest to, że tylko aktualnie wymagane części informacji muszą być załadowane do tabel Data Vault. Nie musimy się martwić o przyszłe wymagania, ponieważ oryginalne dane są nadal dostępne w PSA i mogą być ponownie załadowane, gdy są potrzebne. Widziałem i stosowałem to podejście w kilku projektach klientów i jest to dobre ubezpieczenie przed nieznanymi wymaganiami biznesowymi.
Wirtualna hurtownia danych
Kiedy po raz pierwszy zobaczyłem Roelanta Vosa na konferencji Data Modeling Zone 2017 w Düsseldorfie, byłem pod dużym wrażeniem ciekawego podejścia do architektury, które wyjaśnił: Jedyną warstwą persystentną hurtowni danych jest PSA, a wszystko inne jest implementowane na wierzchu tabel PSA z widokami. Jest to spójna implementacja Wirtualnej Hurtowni Danych, która jest wspierana przez oprogramowanie VDW firmy Roelant. Widziałem to w teorii i w niektórych prezentacjach, ale nigdy w pełnej formie w prawdziwym projekcie.
Takie podejście „NoETL” ma kilka zalet: 1. Bardzo łatwo jest zmienić logikę transformacji bez przeładowywania wszystkich warstw hurtowni danych. 2. Gdy tylko nowe dane zostaną załadowane w warstwie PSA, są one natychmiast widoczne we wszystkich kolejnych warstwach. 3. Jest to swego rodzaju hurtownia danych typu „schema-on-read”, gdzie w czasie zapytania można zdecydować jak dane źródłowe powinny być interpretowane. To wszystko brzmi bardzo ładnie, ale wciąż widzę wyzwanie związane z dobrą wydajnością zapytań. Myślę, że w większości sytuacji, przynajmniej powszechnie używane dane muszą być przechowywane. Ale dzięki podejściu opartemu na widokach, można to zrobić bez większego wysiłku, na przykład za pomocą widoków zmaterializowanych.
Trzydniowy kurs spełnił moje oczekiwania z nawiązką. Mimo, że niektóre z koncepcji już wykorzystałem (szczerze mówiąc, większość z tego, co Roelant wyjaśnił było mi już znane), bardzo podobała mi się budowa architektury hurtowni danych krok po kroku z wykorzystaniem wielu przykładów kodu i dem na żywo. Albo jak powiedziałem jako spontaniczną informację zwrotną na koniec kursu: „To była zabawa”.
.