Esittelyssä 3 tietomallinnusmenetelmää

Tietomalli määrittää ja dokumentoi ohjelmiston perussuunnittelun data-näkökulmasta. Mallinnus voidaan aloittaa korkean tason konseptuaalisesta mallinnuksesta, josta seuraava askel on looginen malli ja lopuksi päädytään fyysiseen tietomalliin. Tässä artikkelissa esittelen 3 tietomallinnusmenetelmää fyysisen tietomallin tekemiseen. Tarkoituksena on näyttää miten erilaisia taulurakenteet ovat riippuen siitä mikä menetelmä on valittu. Tämä on tarkoitettu enemmän introduction-tyyppiseksi kirjoitukseksi, eikä se sisällä kaikkia mahdollisia nyansseja joita eri ratkaisuihin liittyy.  Esimerkkinä mallinnusratkaisuissa käytetään myyntilasku, tuote ja asiakas -tietoja.

Ensimmäinen malli alla on Dimensionaalisen menetelmän mukainen. Dimensioonalisen mallinnuksen
tekniikan esitteli ensimmäisen kerran Ralph Kimball 90-luvulla ja se on yksi käytetyimpiä menetelmiä tietovarastoinnissa. Dimensionaaliset mallit ovat helposti ymmärrettäviä, joustavia ja niistä saa helposti kyseltyä erilaisia aggregaatteja (summia) ulos. Kääntöpuolena dimensionaalisessa mallissa on että ne tallentavat ylimääräistä dataa. Esimerkiksi alla olevassa mallissa maa-tieto toistuu, kuin myös SalesInvoice-taulun Asiakas ja Due_Date. Dimensionaalista mallia ei ole optimoitu operatiivisten järjestelmien pohjaksi. Alla oleva malli ei myöskään tallenna kaikkia muutoksia lähdejärjestelmissä, vaikkakin dimensionaalisen mallinnustekniikan SCD2 dimensiolla se olisi mahdollista.

Dimensioonaalinen malli

Seuraava malli on 3. normaalimuodon mukainen (yleisesti puhutaan myös normalisaatiosta), jonka esitteli E.F.Codd jo 70-luvulla. Normaalimuotoja on tunnistettu yhteensä 6 kappaletta (1-6), mutta kolmatta normaalimuotoa pidetään yleensä riittävänä tarjoamaan riittävän yksinkertaisen tietomallin kuitenkin poistaen Update, Insert ja Delete -operaatioihin liittyviä anomalioita. Normalisointi poistaa datan turhaa/päällekkäistä tallentamista ja sitä käytetään operaatiivisissa järjestelmissä joissa on runsaasti Insert ja Update -operaatioita (Transaction processing).

3 normaalimuodon malli. ”[Every] non-key [attribute] must provide a fact about the key, the whole key, and nothing but the key so help me Codd.”

Viimeisenä esittelyssä Dan Lindstedin vuonna 2000 julkaiseman Data Vault (DV) -mallinnustekniikka. Data Vaulttia käytetään dimensionaalisen mallinnustekniikan tavoin pääasiassa tietovarastointi projekteissa. Alla olevasta kuvasta voi todeta että Data Vault menetelmä on selvästi monimutkaisempi kuin edellä mainitut menetelmät, ainakin taulujen määrällä mitattuna. DV ei ole kaikkein käytetyin menetelmä, joskin sillä on intohimoinen kannattajajoukko. Menetelmä tallentaa kaikki lähes kaikki muutokset lähdejärjestelmästä, joka on voi olla tietyissä tilanteissa toimiva ratkaisu. Esimerkkimallista voi nähdä kyselyjen tekeminen tähän malliin on selvästi monimutkaisempaa kuin esimerkiksi dimensionaalisesta mallista.

Data Vault malli

Dataintegraation yleisimmät ongelmat

Dataintegraatio projektit voivat olla varsin suuria investointeja ja työ ei yleensä pääty alkuperäisen projektin jälkeen. Uusia järjestelmiä rakennetaan ja liiketoiminta esittää uusia vaatimuksia, jotka tarkoittavat uusien dataintegraatioiden rakentamista. Tässä rakennustyössä täytyy olla tarkkana, muuten yritys voi huomata että rakennettu systeemi vaatii alati kasvavan ylläpitotiimin jotta dataintegraatioprosessit pysyvät pystyssä. ITssä on kyse automaatiosta, ja jatkuva manuaalinen työ voi viedä elinvoiman järjestelmien loppukäyttäjiltä.

Mitkä ovat suurimmat ongelmat ja kuinka ne voi välttää?

Flat-tiedostot (Flat Files)

Flat-tiedostoja käytetään usein dataintegraatiossa, ja usein ne ovat ongelmien pääsyyllinen. Jaan tässä nämä tiedostot kahteen ryhmään:

  • automaattisesti generoidut tiedostot
  • excel-tyyppiset tiedostot, joita käyttäjät päivittävät suoraan.

Automaattisesti generoidut Flat-tiedostot

Yleinen ongelma on että tiedosto ei saapunut oikeaan aikaan. Paras ratkaisu tähän ongelmaan on tiedoston generoivan prosessin linkkaaminen sitä vastaanottavaan (lukevaan) päähän. Jos tämä ei ole mahdollista, jää vaihtoehdoksi lisätä lukevan prosessin joustavuutta niin että se pystyy odottamaan tiedoston saapumista ja vasta luettuaan tiedoston käynnistämään sen jälkeen tulevat integraatioprosessit. Vaikka tämä kuulostaa ilmiselvältä, liian usein dataintegraatioita rakennetaan
oletuksella että tiedosto saapuu tasan tietyllä kellonlyömällä, ja epäonnistumisen jälkeen kukaan ei ota vastuuta huonosti toimivasta prosessista.

Toinen yleinen ongelma on että tiedosto ei ole oikeassa formaatissa. Tyypillisesti formaatin on rikkonut muutama rivi, joista löytyy tiedoston tulkitsemislogiikan käyttämiä erikoismerkkejä väärästä paikasta (esim. rivinvaihto tai sarake-erotin). Nämä on sellaisia asioita jotka tiedoston generoivan prosessin pitäisi aina tarkastaa, erityisesti sellaisten kenttien osalta joissa alkuperäinen inputti on tullut avoin tekstikenttä-tyyppisestä syötöstä. Tiedoston generoivan prosessin tulee tarkastaa onko edellämainittuja erikoismerkkejä väärissä paikoissa ja poistaa ne. Tapauksesta
riippuen myös lukevassa päässä voi olla joustavuutta niin että se selviää muutamasta ’huonosta’ rivistä.

Flat-fileet joita käyttäjät päivittävät suoraan (esim. excelit)

Tämä onkin vaikeampi kategoria, ja en oikeastaan suosittelisi tällaista käyttämään ollenkaan sillä näiden muokkaamisessa tuntuu tulevan virheitä joka toisella kerralla. Ja vaikka tiedostoa muokkaava henkilö olisikin hyvin tarkka työssään, voi olla että hän jossain vaiheessa siirtyy muuhun työpaikkaan tai tehtäviin, ja seuraavaksi exceliin arvoja syöttävä henkilö ei onnistukkaan yhtä hyvin. Tämän tyyppisen tiedon syöttämisen tulisi tapahtua sellaisen systeemin läpi joka jo syöttövaiheessa tarkastaa tietotyyppien oikeellisuuden ja mahdollisesti myös arvojen oikeellisuuden.

Tietokannat

Tietokannoista lukemisessa on huomattavasti vähemmän ongelmia. Mutta toki silloin tällöin yhteys voi pätkäistä tai luettava tietokanta on muuten kiireinen (lukossa). Ongelmaa voi helpottaa asettamalla dataa lukevan prosessin yrittämään uudestaan, jos ensimmäinen kerta epäonnistui. Toki jos luettava tai kohde -tietokanta on jatkuvasti hidas tai lukossa, on tutkittava mikä tilanteen aiheuttaa ja korjattava ongelman juurisyy.

Huonosti toteutetut datatransformaatiot

Datatransformaatiot täytyy tehdä niin että tietotyypitykset otetaan huomioon. Esimerkiksi jos meillä on ’If x=y then a else b’ -lauseke joka ei pysty käsittelemään arvoa null kentässä x. Vaikka null arvoja ei kyseisessä kentässä tällä hetkellä näkyisikään, täytyy prosessin pystyä ne käsittelemään, jos lähdetietoihin on mahdollista sellaisia arvoja syöttää.

Liian paljon turhia riippuvuuksia

Edellä mainitut ongelmat voivat suurentua merkittävästi jos dataintegraatioprosessien välille on rakennettu liikaa riippuvuuksia. Tarpeettomia riippuvuuksia ei tietenkään pitäisi olla ollenkaan. Jos prosessi x on loogisesti riippuvainen vain ja ainoastaan prosessien y ja z onnistumisesta, ei ylimääräistä riippuvuutta muihin prosesseihin tule rakentaa. Suurissa dataintegraatioprojekteissa tämä tulee erittäin tärkeäksi, sillä pahimmassa tapauksessa mikä tahansa virhe pysäyttää koko dataintegraatioprosessin, eikä vain sitä osaa joka on riippuvainen virheen aiheuttaneesta osasta, johtaen toistuviin manuaalilatauksiin. Dataintegraatioprosessien riippuvuudet toisiinsa tulee asettaa minimitasolle.

Virhe johtaa aina manuaaliseen uudelleen lataukseen

Joku voi kuitenkin mennä pieleen. Erityisesti transaktio-tyyppisen datan latauksissa on hyvä idea sisällyttää ladattavaan batchiin enemmän kuin vain tarpeellinen data, esim. 1 päivän sijaan viimeisen kahden päivän data. Näin prosessi korjaa itse itsensä seuraavan päivän automaattisessa latauksessa.

Ready Solutions Oy:n sivut on avattu

Olemme pääsemässä vaiheeseen, jossa voimme julkaista sivustomme yleisölle.

Tarkoitus on kertoa mitä osaamme, mitä olemme tehneet sekä toivottavasti saamme luvan muutaman mielenkiintoisen asiakastapauksen julkaisuun!

Ready Solutions Oy julkaisee myös LinkedInissä sisältöä, seuratkaa meitä siellä.

https://www.linkedin.com/company/ready-solutions-oy