Postavljate podatkovno skladišče?Omislite si električni stepalnik

Posted on 01/03/2011

0


Ljudje pri svojem delu uporabljamo orodja. Orodja lahko razvrstimo v različne tipe. Glede na vrsto pogona razlikujemo med ročnim in avtomatskim orodjem. Za posamezno nalogo lahko izberemo različno orodje. Vsem je dobro poznan postopek stepanja smetane, zato bo uporabljen kot ilustrativni prikaz odločitvenega procesa. Dileme, ki smo jim priča ob odločanju o načinu stepanja smetane, srečamo tudi ob odločanju o načinu prenosa podatkov v podatkovno skladišče.
Pri postopku izbire orodja za stepanje smetane imamo na voljo ročni stepalnik, električni stepalnik in tovornjak za mešanje betona oziroma »hruško«. Tovornjak je sicer tujek med vrstami stepalnikov, vendar je namenoma uporabljen za boljšo ponazoritev, da včasih uporabljamo napačno orodje.

Orodja za stepanje smetane

Kaj pa je na voljo pri postopku polnjenja podatkovnega skladišča? Postopek prenosa podatkov v podatkovno skladišče imenujemo ETL. ETL je kratica za Extract, Transform, Load in jo uporabljamo, kadar govorimo o postopku za polnjenje podatkov podatkovnega skladišča. Podatkovno skladišče lahko polnimo s pomočjo lastnih skript ali pa uporabimo orodja, ki so na voljo na trgu. Polnjenje z lastnimi skriptami bo v nadaljevanju poimenovano kot ročni postopek ETL, orodje ETL pa le z besedo orodje.

To bi znal tudi jaz
Uporaba električnega mešalnika je enostavnejša kot uporaba ročnega mešalnika. Pri ročnem mešalniku so pomembni kot mešanja, izkušnje in velika vztrajnost. Ravno tako programiranje zahteva veliko izkušenj in se ga težko naučimo v nekaj dneh. Pričetek uporabe orodja je precej enostavnejši kot programiranje. Orodje ponuja prijazen in intuitiven uporabniški vmesnik. Omogoča nam takojšen pričetek dela, saj lahko z razmeroma malo znanja modeliramo enostaven proces. Postopek ETL ni programiran, ampak je bolj podoben sestavljanju kock. Orodje je primerno tudi za poslovne analitike, saj ne zahteva znanja programiranja. Poslovni analitiki pogosto učinkoviteje razvijejo posamezni ETL postopek polnjenja podatkovnega skladišča, saj upoštevajo njim dobro poznana poslovna pravila, ki jih informatiki ne poznajo.
Električni mešalnik ima na voljo dve metlici, nastavitev hitrosti, običajno zraven dobimo tudi različne vrste metlic. Tudi orodja nam nudijo gradnike za tipična pogosta opravila ob polnjenju podatkovnega skladišča, saj so namenjena in prilagojena postopku ETL ter vsebujejo dobre prakse. Gradniki vsebujejo logiko, ki nastopa pri večini podjetij v postopkih ETL, zato bo najverjetneje koristen tudi nam. Pri polnjenju podatkovnega skladišča moramo npr. pogosto zagotoviti, da se v podatkovnem skladišču ohrani zgodovina ob spremembi šifranta v aplikaciji za podporo poslovanju (SCD2). Ročno programiranje takšne zahteve je srednje težavno, orodje pa nam za to ponuja enostaven gradnik.
Stepanje smetane z električnim mešalnikom je hitrejše. Izkaže se, da je tudi razvoj postopka ETL z orodjem hitrejši. Orodje samodejno predlaga povezavo med izvornimi in ponornimi tabelami glede na imena polj. Enostaven postopek polnjenja podatkov iz vira v ponor lahko opravimo že z nekaj kliki, poleg tega je uporabniku na voljo prijazen način dela s pomočjo tehnike »primi in spusti«.

Heterogeno okolje
Ročna stepalka je običajno večja od metlice na električnem mešalniku. Včasih smetano mešamo v široki in plitki posodi, včasih pa moramo smetano pripraviti v posodi z ozkim vratom. Ročna stepalka je neprimerna, kadar imamo različne posode, saj je v posodi z ozkim vratom ne moremo niti uporabiti. Ali se bomo tudi pri pridobivanju podatkov za podatkovno skladišče srečevali z različnimi vrstami posod? Vrsta posode je v primeru podatkovnega skladišča različen podatkovni vir. Najlažje je, če sta naš vir in ponor na enaki podatkovni bazi. Pogosto pa moramo v podatkovno skladišče prenašati tudi datoteke, katerih struktura se spreminja, lahko so to tudi excelove datoteke. Orodja so prilagojena delu z datotekami, enostavno lahko beremo podatke iz različnih podatkovnih baz ali pa uporabljamo celo spletne servise. Branje ali kreiranje datotek XML je z orodjem enostavno.
Pri prenosu podatkov iz nekaterih aplikacij nam delo bistveno poenostavijo gradniki, ki so že pripravljeni za branje podatkov iz aplikacij. Za branje iz aplikacije SAP nam npr. nekatera orodja generirajo programsko kodo ABAP, ki jo interno uporablja SAP. Orodje lahko poskrbi, da se programska koda, ki je bila generirana z modeliranjem postopka ETL, zažene neposredno v aplikaciji SAP.

Primer postopka ETL

Vse je dokumentirano
Pri najpomembnejši prednosti orodja pa težko najdemo primerjavo s stepanjem smetane. Pri ročnem postopku ETL običajno del dokumentacije dodamo poleg programske kode, del pa je v obliki dokumenta. Vsaka sprememba v programski kodi zahteva, da se ažurira tudi pripadajoči dokument. Dokumentacija lahko postane neažurna, če razvojniki pod časovnim pritiskom pozabijo ažurirati dokumentacijo. Neažurna dokumentacija je brez prave vrednosti. Slika 2 prikazuje primer postopka ETL, razvitega z orodjem.Razvoj postopka z orodjem omogoča pripravo samodejne dokumentacije. Dokumentacija vsebuje podrobno preslikavo vira v ponor, kjer so opisana vsa polja, podatkovni tipi, čiščenje in transformacija podatkov. Orodja omogočajo tudi pripravo samodejne dokumentacije, ki jo lahko izvozimo v različnih formatih (PDF, Word …). Pri pripravi dokumentacije lahko izluščimo le slike, ki opisujejo postopek ETL. Prenos podatkov iz dveh tabel v tabelo v podatkovnem skladišču je lažje razumljiv, če si postopek ogledamo na shemi, kot pa z branjem nekaj 100 vrstic programske kode.

Lojze odhaja

Lojze odhaja. Kaj bomo pa zdaj?
Pri pripravi torte nam recept ne zadostuje. Potrebujemo tudi veliko izkušenj, za pripravo najboljše smetane na svetu so potrebna leta učenja. Postopek ETL je kompleksnejši od priprave smetane, saj mora razvijalec dobro poznati tehnologijo in vsebino poslovnega procesa. Poznavanje poslovnega procesa z vsemi izjemami je vgrajeno v kodi. V Sloveniji so ekipe za podatkovna skladišča manjše, zato določena oseba na projektu izrazito bolje pozna podrobnosti kot ostali.
Vzemimo hipotetični primer podjetja, kjer je IT specialist Lojze sodeloval na področju izgradnje podatkovnega skladišča. Lojze je za podjetje nepogrešljiv, saj se vsi zavedajo njegovega doprinosa. Napisal je tisoče vrstic programske kode, pri delu je zelo produktiven, vendar mu dokumentacije nikdar ni uspelo urediti do konca. Nekega dne se Lojze odloči, da odide novim izzivom naproti.
Lojze mora ob odhodu predati delo ostalim sodelavcem, ki pa procesa ne poznajo. Lojze bo sodelavcem postopek ETL učinkoviteje razložil preko shem v orodju, saj slika v nasprotju s programsko kodo jedrnato ponazori tok podatkov. Prenos znanja s pomočjo orodja je enostavnejši.

Zamenjajmo stran vožnje, vsi na levo!
Spremembe so stalnica, ki se jim ne moremo izogniti. Ob pripravi postopka ETL moramo imeti od samega začetka v mislih, kako bo postopek lažje vzdrževati. Danes nihče ne pričakuje, da bomo vozili po levi, zato tega ne vgradimo v naša pričakovanja, vendar je življenje polno presenečenj. Spremembe so neposredno povezane z vzdrževanjem.
Pri vzdrževanju je pomembno, da ugotovimo vpliv spremembe na naš postopek. Orodje nam ponuja izdelavo analize, ki nam prikaže sheme, kjer se določeno polje iz tabele nahaja. Predstavljajmo si, da smo v Sloveniji uvedli regije. Odločili smo se, da nas poštna številka ne zanima več, ampak bomo namesto nje uporabljali regijo. Naša naloga je, da popravimo vse postopke, kjer je bila poštna številka ponor in jo nadomestimo z regijo. Pri ročnem postopku ETL moramo z različnimi iskalnimi kriteriji prečesati kodo. Orodja nam ponujajo elegantnejšo rešitev, saj nam lahko prikažejo vse postopke, kjer določen atribut nastopa kot ponor.

Prepričati prepričane
Razvijalci dajejo prednost programski kodi, ker orodjem ne zaupajo. Prisegajo na hitrejše delovanje in večjo fleksibilnost pri delu. Poudarjajo tudi večji nadzor nad izvajanjem postopka. Trdijo, da bo postopek, razvit z orodjem, deloval počasneje, saj uporabnik le združuje kocke in v ozadju generira špageti kodo.
Protiargument orodjem je tudi cena. Programska koda je načeloma zastonj, vendar le iz ožjega zornega kota. Če upoštevamo hitrejši razvoj, krajši čas vzdrževanja in boljšo dokumentacijo, potem se tehtnica hitro prevesi v korist uporabe orodja. Pri izračunu stroškov in koristi pa sploh še nismo upoštevali, da lahko Lojze odide …
Pogost argument je, da je zelo kompleksne transformacije v orodju težko narediti. Vaja dela mojstra, zato bomo tudi pri delu z orodjem napredovali. Orodja običajno nudijo gradnike, v katere se lahko neposredno vpiše stavke SQL. Stavkov SQL v neposredni obliki sicer ni priporočeno uporabljati, vendar smo k temu včasih primorani zaradi performačnih  razlogov.
Možen argument za zavrnitev orodja je tudi trditev, da imajo postopek ETL že razvit. Migracija vseh obstoječih skript je za večino strank res prevelik zalogaj, smiselno pa je določiti, da vse nove postopke zgradimo z orodjem. Kasneje migriramo še kritične postopke, pri katerih je veliko težav in so zreli za reinženiring.

Vsi so lepi. Katerega izbrati?
Pri nakupu je pomemben kriterij cena. Pri orodjih ETL izbiramo med odprtokodnimi in plačljivimi orodji. Poleg cene moramo upoštevati posebnosti našega okolja. Če uporabljamo aplikacije SAP ali Oracle, potem imajo določena orodja že vgrajene gradnike za povezavo do aplikacij, kar nam pride prav ob implementaciji postopka ETL. Paziti moramo, da ne bomo smetane mešali s »hruško«, zato nas ne sme prepričati 1001 funkcionalnost, ki je ne potrebujemo. Pri odločitvi o izbiri nas običajno zanima tudi umeščenost posameznega produkta na trgu. V letu 2010 so bila najvišje uvrščena plačljiva orodja Informatica, IBM, SAP in Oracle, od odprtokodnih rešitev pa Talend (vir: Gartner, november 2010).

Orodje ETL je enostavno za uporabo in delo z njim opravimo hitreje. Orodje lahko uprabljajo tudi poslovni analitiki, saj ne zahteva znanja programiranja. Orodje je specializirano za postopke ETL, zato vsebuje učinkovite gradnike. Orodje se izkaže v heterogenem okolju, saj nam olajša priklope na različne podatkovne vire. Glavna prednost orodja pred ročnim postopkom ETL je, da je postopek, razvit z orodjem, hkrati tudi dokumentacija, poleg tega pa je vzdrževanje enostavnejše. Spremembam se ne moremo izogniti, zato moramo stremeti k temu, da bo naš sistem čim bolj robusten in lažji za vzdrževanje. Danes ni več dileme, orodje da ali ne, temveč katero orodje izbrati. Tvegati z odprtokodnimi orodji ali zaupati plačljivim orodjem?

Primož Mihelič