Sunt un programator leneș! Acesta a fost un detaliu important pe care l-am învățat de la Roelant Vos în cadrul trainingului său de săptămâna trecută. Dar au fost multe alte subiecte interesante. Un rezumat personal al unui curs de 3 zile despre Data Warehouse Design Patterns.
Săptămâna trecută am avut ocazia să particip la cursul Data Warehouse Design Patterns al lui Roelant Vos. L-am văzut pe Roelant în prezentări la conferințe de modelare a datelor și apreciez blogul său cu o mulțime de informații utile despre arhitectura Data Warehouse și implementarea Data Vault. Așa că, atunci când am primit informația de la colegii mei de la Trivadis că va ține un curs în Zurich, am profitat de șansa de a mă înscrie la acest curs de 3 zile.
Nu voi scrie o recenzie detaliată a întregului curs în această postare pe blog. Dar în rândurile de mai jos găsiți câteva note despre trei subiecte care au fost – din punctul meu de vedere – importante în acest training: Pattern Based Design, Persistent Staging Area și Virtual Data Warehouse.
O arhitectură tipică a unui depozit de date constă în mai multe straturi pentru încărcarea, integrarea și prezentarea informațiilor de afaceri din diferite sisteme sursă. Numărul și denumirile straturilor pot varia în fiecare sistem, dar în majoritatea mediilor datele sunt copiate de la un strat la altul cu ajutorul instrumentelor ETL sau al instrucțiunilor SQL pure. Cu o arhitectură bună, modelele de transformare și încărcare a datelor într-un anumit strat sunt întotdeauna similare. Acest lucru face mai ușoară (și mai rapidă) dezvoltarea proceselor ETL, deoarece modelele repetabile pot fi generate cu ajutorul unui instrument de automatizare a depozitului de date (DWA). Pe blogul lui Roelant poate fi găsită o prezentare generală a cadrului său de integrare a datelor. Exemple de cod sunt disponibile pe GitHub.
De ce sunt un programator leneș? Ca mulți alți programatori, nu-mi place să scriu cod repetitiv. Roelant este și el un programator leneș. De aceea a petrecut mult timp pentru a dezvolta instrumente și metode pentru a accelera sarcinile de dezvoltare prin generarea codului SQL pentru a construi și încărca depozitele de date. În timpul cursului, el a explicat multe modele de proiectare cu ajutorul generatorului SQL VDW (Virtual Data Warehouse). Acesta poate fi descărcat gratuit de pe site-ul său web și este util pentru prototipuri rapide și teste de regresie a modificărilor de tipare.
Persistent Staging Area
Un strat important în arhitectura propusă este PSA (Persistant Staging Area). Deși această zonă a stratului de staging este opțională, este foarte practică și foarte recomandată, în special atunci când cerințele de afaceri nu sunt încă clare la începutul proiectului. PSA este o arhivă istorică a datelor din sistemele sursă și înlocuiește clasica zonă de staționare volatilă. PSA este încărcată fie cu mecanisme CDC (Change Data Capture), fie cu o detecție delta între sistemul sursă și versiunea curentă a PSA. Zona de staționare persistentă este sursa unică de încărcare a tabelelor Data Vault (Hubs, Links și Satellites) în stratul de integrare.
Avantajul unei zone de staționare persistente este că în tabelele Data Vault trebuie încărcate doar părțile de informații necesare în prezent. Nu trebuie să ne pese de cerințele viitoare, deoarece datele originale sunt încă disponibile în PSA și pot fi reîncărcate atunci când este nevoie de ele. Am văzut și am folosit această abordare în mai multe proiecte ale clienților și este o bună asigurare împotriva cerințelor de afaceri necunoscute.
Virtual Data Warehouse
Când l-am văzut pentru prima dată pe Roelant Vos la conferința Data Modeling Zone 2017 din Düsseldorf, am fost foarte impresionat de o abordare arhitecturală interesantă pe care a explicat-o. „Am fost foarte impresionat de o abordare arhitecturală interesantă: Singurul strat persistant al unui depozit de date este PSA, iar tot restul este implementat deasupra tabelelor PSA cu ajutorul vizualizărilor. Aceasta este implementarea consecventă a unui Depozit de date virtual, care este susținută de software-ul VDW de la Roelant. Am văzut acest lucru în teorie și în unele prezentări, dar niciodată în forma sa completă într-un proiect real.
Această abordare „NoETL” are mai multe avantaje: 1. Este foarte ușor de schimbat logica de transformare fără a reîncărca toate straturile depozitului de date. 2. De îndată ce se încarcă date noi în stratul PSA, acestea sunt imediat vizibile în toate straturile ulterioare. 3. Este un fel de depozit de date „schema-on-read”, în care puteți decide în momentul interogării cum trebuie interpretate datele sursă. Toate acestea sună foarte bine, dar încă văd provocarea unei bune performanțe de interogare. Cred că, în majoritatea situațiilor, cel puțin datele utilizate în mod obișnuit trebuie să fie persistate. Dar cu abordarea prin vizualizări, acest lucru se poate face fără prea mult efort, de exemplu cu vizualizări materializate.
Cursul de 3 zile mi-a îndeplinit mai mult decât așteptările. Deși foloseam deja o parte din concepte eu însumi (ca să fiu sincer, cea mai mare parte din ceea ce a explicat Roelant îmi era deja familiar), mi-a plăcut foarte mult construirea pas cu pas a unei arhitecturi de depozit de date, folosind multe exemple de cod și demonstrații live. Sau, așa cum am spus ca feedback spontan la finalul cursului: „A fost distractiv”.
.