Jsem líný programátor! To byl jeden důležitý detail, který jsem se dozvěděl od Roelanta Vose na jeho školení minulý týden. Ale bylo tam mnoho dalších zajímavých témat. Osobní shrnutí třídenního kurzu o návrhových vzorech datových skladů
Poslední týden jsem měl možnost zúčastnit se kurzu Data Warehouse Design Patterns Roelanta Vose. Roelanta jsem viděl v prezentacích na konferencích o datovém modelování a oceňuji jeho blog s mnoha užitečnými informacemi o architektuře datových skladů a implementaci datových trezorů. Když jsem tedy od kolegů z Trivadisu dostal informaci, že bude pořádat školení v Curychu, využil jsem příležitosti a na tento třídenní kurz se přihlásil.
V tomto blogovém příspěvku nebudu psát podrobnou recenzi celého kurzu. Na následujících řádcích však najdete několik poznámek ke třem tématům, která byla – z mého pohledu – na tomto školení důležitá:
Typická architektura datového skladu se skládá z několika vrstev pro načítání, integraci a prezentaci obchodních informací z různých zdrojových systémů. Počet a názvy vrstev se mohou v jednotlivých systémech lišit, ale ve většině prostředí se data kopírují z jedné vrstvy do druhé pomocí nástrojů ETL nebo čistě příkazů SQL. Při dobré architektuře jsou vzory pro transformaci a načítání dat do určité vrstvy vždy podobné. To usnadňuje (a urychluje) vývoj procesů ETL, protože opakovatelné vzory lze generovat pomocí nástroje pro automatizaci datového skladu (DWA). Na Roelantově blogu najdete přehled jeho Data Integration Framework. Příklady kódu jsou k dispozici na GitHubu.
Proč jsem líný programátor? Stejně jako mnoho jiných vývojářů nerad píšu opakující se kód. Roelant je také líný programátor. Proto strávil spoustu času vývojem nástrojů a metod pro urychlení vývojových úloh generováním kódu SQL pro sestavení a načítání datových skladů. Během kurzu vysvětlil mnoho návrhových vzorů pomocí generátoru SQL VDW (Virtual Data Warehouse). Lze jej zdarma stáhnout z jeho webových stránek a je užitečný pro rychlé prototypy a regresní testy změn vzorů.
Persistent Staging Area
Důležitou vrstvou v navrhované architektuře je PSA (Persistant Staging Area). Ačkoli je tato oblast vrstvy staging nepovinná, je velmi praktická a velmi doporučovaná, zejména pokud na začátku projektu ještě nejsou jasné obchodní požadavky. PSA je historický archiv dat ze zdrojových systémů a nahrazuje klasickou nestálou oblast Staging Area. PSA se načítá buď pomocí mechanismů CDC (Change Data Capture), nebo pomocí detekce delta mezi zdrojovým systémem a aktuální verzí PSA. Trvalá etapová oblast je jedinečným zdrojem pro načítání tabulek datového trezoru (rozbočovače, spoje a satelity) v integrační vrstvě.
Výhodou trvalé etapové oblasti je, že do tabulek datového trezoru je třeba načítat pouze aktuálně požadované části informací. Nemusíme se starat o budoucí požadavky, protože původní data jsou stále k dispozici v PSA a lze je znovu načíst, když jsou potřeba. Tento přístup jsem viděl a použil v několika zákaznických projektech a je to dobrá pojistka proti neznámým obchodním požadavkům.
Virtuální datový sklad
Když jsem poprvé viděl Roelanta Vose na konferenci Data Modeling Zone 2017 v Düsseldorfu, velmi mě zaujal zajímavý architektonický přístup, který vysvětloval: Jedinou perzistentní vrstvou datového skladu je PSA a vše ostatní je implementováno nad tabulkami PSA pomocí pohledů. Jedná se o důslednou implementaci virtuálního datového skladu, kterou podporuje software VDW společnosti Roelant. Viděl jsem to teoreticky a v některých prezentacích, ale nikdy v plné podobě v reálném projektu.
Tento přístup „NoETL“ má několik výhod: 1. Je velmi snadné změnit transformační logiku, aniž byste museli znovu načítat všechny vrstvy datového skladu. 2. Jakmile jsou ve vrstvě PSA načtena nová data, jsou okamžitě viditelná ve všech následujících vrstvách. 3. Jedná se o jakýsi datový sklad typu schema-on-read, kde můžete v době dotazování rozhodnout, jak mají být zdrojová data interpretována. To vše zní velmi pěkně, ale stále vidím problém v dobrém výkonu dotazů. Myslím, že ve většině situací musí být alespoň běžně používaná data persistována. Ale s přístupem pohledů to lze udělat bez větší námahy, například pomocí materializovaných pohledů.
Třídenní kurz více než splnil má očekávání. Přestože jsem některé koncepty již sám používal (upřímně řečeno, většinu toho, co Roelant vysvětloval, jsem již znal), velmi se mi líbilo postupné budování architektury datového skladu pomocí mnoha příkladů kódu a živých ukázek. Nebo jak jsem řekl jako spontánní zpětnou vazbu na konci kurzu: „Byla to zábava“.