Olen laiska ohjelmoija! Se oli yksi tärkeä yksityiskohta, jonka opin Roelant Vosilta hänen koulutuksessaan viime viikolla. Mutta oli monia muitakin mielenkiintoisia aiheita. Henkilökohtainen yhteenveto kolmipäiväisestä kurssista Data Warehouse Design Patterns.
Viime viikolla minulla oli mahdollisuus osallistua Roelant Vosin Data Warehouse Design Patterns -kurssille. Olen nähnyt Roelantin esityksissä tietomallinnuskonferensseissa, ja arvostan hänen blogiaan, jossa on paljon hyödyllistä tietoa tietovarastojen arkkitehtuurista ja tietovaraston toteutuksesta. Kun siis sain Trivadis-kollegoiltani tiedon, että hän pitää koulutuksen Zürichissä, tartuin tilaisuuteen ja osallistuin tälle kolmipäiväiselle kurssille.
En aio kirjoittaa tässä blogikirjoituksessa yksityiskohtaista arviota koko kurssista. Mutta seuraavilla riveillä on muutamia muistiinpanoja kolmesta aiheesta, jotka olivat – minun näkökulmastani – tärkeitä tässä koulutuksessa: Pattern Based Design, Persistent Staging Area ja Virtual Data Warehouse.
Tyypillinen tietovarastoarkkitehtuuri koostuu useista kerroksista, joihin ladataan, integroidaan ja esitetään liiketoimintatietoa eri lähdejärjestelmistä. Kerrosten määrä ja nimet voivat vaihdella kussakin järjestelmässä, mutta useimmissa ympäristöissä tiedot kopioidaan kerroksesta toiseen ETL-työkaluilla tai puhtailla SQL-lausekkeilla. Hyvässä arkkitehtuurissa mallit tietojen muuntamiseksi ja lataamiseksi tiettyyn kerrokseen ovat aina samanlaisia. Tämä helpottaa (ja nopeuttaa) ETL-prosessien kehittämistä, koska toistettavat kuviot voidaan luoda tietovarastoautomaatiotyökalulla (DWA). Roelantin blogista löytyy katsaus hänen Data Integration Frameworkiinsa. Koodiesimerkkejä on saatavilla GitHubissa.
Miksi olen laiska ohjelmoija? Kuten monet muutkin kehittäjät, en pidä toistuvan koodin kirjoittamisesta. Myös Roelant on laiska ohjelmoija. Siksi hän käytti paljon aikaa kehittääkseen työkaluja ja menetelmiä, joilla kehitystehtäviä voidaan nopeuttaa tuottamalla SQL-koodia tietovarastojen rakentamiseen ja lataamiseen. Kurssin aikana hän selitti monia suunnittelumalleja SQL-generaattorilla VDW (Virtual Data Warehouse). Sen voi ladata ilmaiseksi hänen verkkosivuiltaan, ja se on hyödyllinen kuvioiden muutosten nopeisiin prototyyppeihin ja regressiotesteihin.
Persistent Staging Area
Tärkeä kerros ehdotetussa arkkitehtuurissa on PSA (Persistant Staging Area). Vaikka tämä staging-kerroksen alue on valinnainen, se on hyvin käytännöllinen ja erittäin suositeltava erityisesti silloin, kun liiketoimintavaatimukset eivät ole vielä projektin alussa selvillä. PSA on lähdejärjestelmistä peräisin olevien tietojen historiallinen arkisto, ja se korvaa klassisen haihtuvan Staging Area -alueen. PSA ladataan joko CDC-mekanismeilla (Change Data Capture) tai delta-tunnistuksella lähdejärjestelmän ja PSA:n nykyisen version välillä. Persistent Staging Area on ainoa lähde, josta integraatiokerroksen Data Vault -taulukot (Hubit, Linkit ja Satelliitit) ladataan.
Persistent Staging Area:n etuna on, että Data Vault -taulukoihin on ladattava vain kulloinkin tarvittava osa tiedoista. Meidän ei tarvitse huolehtia tulevista tarpeista, koska alkuperäiset tiedot ovat edelleen saatavilla PSA:ssa ja ne voidaan ladata uudelleen, kun niitä tarvitaan. Olen nähnyt ja käyttänyt tätä lähestymistapaa useissa asiakasprojekteissa, ja se on hyvä vakuutus tuntemattomien liiketoimintavaatimusten varalta.
Virtuaalinen tietovarasto
Kun näin Roelant Vosin ensimmäistä kertaa Data Modeling Zone 2017 -konferenssissa Düsseldorfissa, olin hyvin vaikuttunut mielenkiintoisesta arkkitehtuurilähestymistavasta, jota hän selitti: Tietovaraston ainoa persistentti kerros on PSA, ja kaikki muu toteutetaan PSA-taulujen päälle näkymin. Tämä on virtuaalisen tietovaraston johdonmukainen toteutus, jota Roelantin VDW-ohjelmisto tukee. Olen nähnyt tämän teoriassa ja joissakin esityksissä, mutta en koskaan täydessä muodossaan todellisessa projektissa.
Tällä ”NoETL”-lähestymistavalla on useita etuja: 1. Muunnoslogiikkaa on erittäin helppo muuttaa ilman, että tietovaraston kaikkia kerroksia ladataan uudelleen. 2. Heti kun uutta tietoa ladataan PSA-kerrokseen, se näkyy välittömästi kaikissa seuraavissa kerroksissa. 3. Se on eräänlainen schema-on-read-tietovarasto, jossa voit päättää kyselyhetkellä, miten lähdetietoja tulkitaan. Tämä kaikki kuulostaa erittäin mukavalta, mutta näen silti haasteena hyvän kyselyn suorituskyvyn. Mielestäni useimmissa tilanteissa ainakin yleisesti käytetyt tiedot on säilytettävä. Mutta view-lähestymistavan avulla tämä voidaan tehdä ilman suurempaa vaivaa, esimerkiksi materialisoitujen näkymien avulla.
Kolmen päivän kurssi on täyttänyt odotukseni enemmän kuin hyvin. Vaikka käytin joitakin käsitteitä jo itsekin (rehellisesti sanottuna suurin osa siitä, mitä Roelant selitti, oli minulle jo ennestään tuttua), pidin kovasti tietovarastoarkkitehtuurin vaiheittaisesta rakentamisesta monien koodiesimerkkien ja live-demojen avulla. Tai kuten sanoin spontaanina palautteena kurssin lopussa: ”Se oli hauskaa”.