Lusta programozó vagyok! Ez volt az egyik fontos részlet, amit Roelant Vostól tanultam a múlt heti képzésén. De volt még sok más érdekes téma is. Egy személyes összefoglaló az Adattárház tervezési mintákról szóló 3 napos tanfolyamról.
A múlt héten lehetőségem volt részt venni Roelant Vos Adattárház tervezési minták című tanfolyamán. Roelantot már láttam adatmodellezési konferenciákon tartott előadásokon, és nagyra értékelem a blogját, amely sok hasznos információt tartalmaz az adattárház architektúráról és a Data Vault megvalósításáról. Így amikor a Trivadis kollégáimtól azt az információt kaptam, hogy Zürichben tart egy képzést, éltem a lehetőséggel, hogy részt vegyek ezen a 3 napos tanfolyamon.
Ezzel a blogbejegyzéssel nem írok részletes ismertetőt az egész tanfolyamról. De a következő sorokban találsz néhány jegyzetet három olyan témáról, amelyek – az én szempontomból – fontosak voltak ezen a képzésen: Pattern Based Design, Persistent Staging Area és Virtual Data Warehouse.
A tipikus adattárház architektúra több rétegből áll, amelyek a különböző forrásrendszerekből származó üzleti információk betöltésére, integrálására és bemutatására szolgálnak. A rétegek száma és neve az egyes rendszerekben változhat, de a legtöbb környezetben az adatokat ETL eszközökkel vagy tiszta SQL utasításokkal másolják egyik rétegből a másikba. Egy jó architektúra esetén az adatok átalakítására és egy adott rétegbe való betöltésére szolgáló minták mindig hasonlóak. Ez megkönnyíti (és felgyorsítja) az ETL-folyamatok fejlesztését, mivel az ismétlődő mintákat adattárház-automatizálási (DWA) eszközzel lehet létrehozni. Roelant blogján áttekintés található az adatintegrációs keretrendszeréről. A kódpélda elérhető a GitHubon.
Miért vagyok lusta programozó? Sok más fejlesztőhöz hasonlóan én sem szeretek ismétlődő kódot írni. Roelant is lusta programozó. Ezért töltött sok időt azzal, hogy olyan eszközöket és módszereket fejlesszen ki, amelyek felgyorsítják a fejlesztési feladatokat az adattárházak létrehozásához és betöltéséhez szükséges SQL-kód generálásával. A tanfolyam során számos tervezési mintát ismertetett a VDW (Virtual Data Warehouse) SQL-generátorral. Ez ingyenesen letölthető a honlapjáról, és hasznos a minták változásainak gyors prototípusaihoz és regressziós tesztjeihez.
Persistent Staging Area
A javasolt architektúrában fontos réteg a PSA (Persistant Staging Area). Bár a staging rétegnek ez a területe opcionális, nagyon praktikus és erősen ajánlott, különösen akkor, ha a projekt kezdetén az üzleti követelmények még nem egyértelműek. A PSA a forrásrendszerekből származó adatok történeti archívuma, és felváltja a klasszikus, illékony Staging Area-t. A PSA-t vagy CDC (Change Data Capture) mechanizmusokkal, vagy a forrásrendszer és a PSA aktuális verziója közötti delta észleléssel töltik be. A Persistent Staging Area az Integrációs Rétegben lévő Data Vault táblák (Hubs, Links és Satellites) betöltésének egyedi forrása.
A Persistent Staging Area előnye, hogy az információknak csak az aktuálisan szükséges részeit kell betölteni a Data Vault táblákba. Nem kell törődnünk a jövőbeli igényekkel, mert az eredeti adatok még mindig rendelkezésre állnak a PSA-ban, és szükség esetén újra betölthetők. Ezt a megközelítést több ügyfélprojektben láttam és használtam, és jó biztosíték az ismeretlen üzleti követelmények ellen.”
Virtuális adattárház
Amikor először láttam Roelant Vos-t a düsseldorfi Data Modeling Zone 2017 konferencián, nagy hatással volt rám egy érdekes architektúra-megközelítés, amelyet kifejtett: Az adattárház egyetlen perzisztens rétege a PSA, és minden más a PSA táblák tetején valósul meg nézetekkel. Ez a virtuális adattárház következetes megvalósítása, amelyet a Roelant VDW szoftvere támogat. Láttam ezt elméletben és néhány előadáson, de soha nem teljes formájában egy valós projektben.
Ez a “NoETL” megközelítés több előnnyel is jár: 1. Nagyon könnyen megváltoztatható az átalakítási logika anélkül, hogy az adattárház összes rétegét újra kellene tölteni. 2. Amint az új adatok betöltődnek a PSA-rétegbe, azonnal láthatóvá válnak az összes következő rétegben. 3. Ez egyfajta schema-on-read adattárház, ahol már lekérdezéskor eldöntheti, hogyan kell értelmezni a forrásadatokat. Ez mind nagyon jól hangzik, de még mindig látom a jó lekérdezési teljesítmény kihívását. Úgy gondolom, hogy a legtöbb helyzetben legalább az általánosan használt adatokat meg kell perzisztálni. De a nézeti megközelítéssel ez különösebb erőfeszítés nélkül megoldható, például materializált nézetekkel.”
A 3 napos tanfolyam bőven beváltotta a hozzá fűzött reményeimet. Bár a koncepciók egy részét már magam is használtam (hogy őszinte legyek, a Roelant által elmondottak nagy része már ismerős volt számomra), nagyon tetszett az adattárház-architektúra lépésről lépésre történő felépítése sok kódpélda és élő demó segítségével. Vagy ahogy a tanfolyam végén spontán visszajelzésként mondtam: “Szórakoztató volt”.