SAS Slovakia Newsletter / Biznis analytika

Poézia dátového modelovania

Prečo sa v dátových skladoch používajú špeciálne dátové modely? Je to samozrejme dané tým, že obsahujú iné informácie a pracuje sa s nimi inak, než ako je to pri „klasických“ operatívnych systémoch. U tých ide predovšetkým o rýchly a spoľahlivý zápis transakcií, zatiaľ čo dátové sklady sú zamerané na zložité čítanie
a analýzu rozsiahlych informácií. A to sa odráža aj v zodpovedajúcich dátových štruktúrach alebo ako hovorí klasik: Predsa nebudeme učiť ovcu aportovať.

Vláda tuhej normalizácie

Pre primárne operatívne systémy, uchovávajúce dáta v relačných databázach, sa dnes najčastejšie využíva  entitno-relačný model (E-R model). Tento koncept sa snaží čo najlepšie odrážať vzťahy medzi skutočnými existujúcimi entitami (výrobok, podnik, faktúra, zamestnanec), a to tak, že v databáze im zodpovedajú konkrétne relačné tabuľky. Normou pre ukladanie dát do týchto modelov je tretia normálna forma (3NF). Ak nechceme rozoberať detaily definícií relačnej algebry, obmedzíme sa na konštatovanie, že dáta sú uložené tak, aby sa všetky zmeny ukladali do databázy iba raz, jednoznačným spôsobom a každú informáciu v nej nájdeme iba na jednom mieste. V tomto zmysle sú operatívne databázy silne normalizované.

Prichádza uvoľnenie

V dátových skladoch sa príliš nestaráme o to, aby dáta boli ukladané úsporne a na jedno miesto. Naopak, je nám dobrý každý spôsob, ktorý urýchli čítanie a analýzy. Preto je úplne legitímne, že dáta sa ukladajú toľkými spôsobmi, koľkými ich potom budeme čítať a interpretovať. Pokojne môžeme mať  tú istú informáciu vo viacerých tabuľkách v rôznej podobe, na viacerých miestach. Ukladáme si aj dopredu vypočítané a agregované hodnoty, atď. V porovnaní s primárnymi systémami bývajú teda dátové sklady silne denormalizované.

Normy pre denormalizáciu

Je zrejmé, že takýto prístup znamená omnoho viac starostí pri zápise dát – musíme si dať pozor, aby všetky zmeny boli vždy vykonané na všetkých miestach, kam sme danú informáciu v nejakej podobe uložili. Aby bolo možné i pri tomto prístupe udržať nad informáciami dátového skladu kontrolu, uplatňujú sa aj tu predsa len určité pravidlá.
Základom týchto pravidiel je zámer pozerať sa na svet prostredníctvom kocky – teda multidimenzionálnej kocky. Našou úlohou je teda šikovne uložiť dáta do relačnej databázy tak, aby z nich bolo možné čo najjednoduchšie kocku vyrobiť.  A na to slúži koncept hviezd a vločiek.

Vyšla hviezda nad Warehousom

Základná myšlienka spočíva v tom, že sa všetky metriky (fakty, ukazovatele) umiestnia do zvláštnej tabuľky (faktová tabuľka). Tá obsahuje v jednotlivých riadkoch konkrétne merané hodnoty rôznych metrík. Jednotlivé riadky potom zodpovedajú kombináciám prvkov rôznych dimenzií. Prakticky to znamená, že každý riadok obsahuje odkazy (referencie, cudzie kľúče) do ďalších „popisných“ tabuliek, uchovávajúcich dáta kategórií (dimenzií), podľa ktorých chceme ukazovatele sledovať. „Ľudsky“ si to môžeme predstaviť napríklad tak, že faktová tabuľka obsahuje údaje o počtoch predaných kusov, objemu predaja v €, zľavu, čiastku dane, atď.  a sledujeme ich podľa jednotlivých výrobkov, regiónov, zákazníkov, obchodníkov, spôsobu predaja a samozrejme v čase. Týmto pohľadom zodpovedajú jednotlivé dimenzie reprezentované dimenzionálnymi tabuľkami v databáze.

Keď si to nakreslíme, získame obrázok, na ktorom je faktová tabuľka obklopená dimenzionálnymi tabuľkami, ktoré sú s ňou spojené referenčnými väzbami. Hovorí sa tomu usporiadanie do hviezdy (Star schéma). Je to hneď na prvý pohľad šikovné. Dimenzie sa zase tak často nemenia, zatiaľ čo fakty máme pekne na jednom mieste a môžeme si elegantne vytvárať kocky. Dá sa povedať, že hviezdicová schéma predstavuje základnú normu pre denormalizáciu dátového skladu.

Obr. Star schéma

Na dátový sklad sneží

Ono to však zďaleka nie je tak jednoduché, ako už nakoniec asi aj čakáme. Otázka znie, ako vlastne vyzerajú dimenzionálne tabuľky.
Pokiaľ umiestnime všetky dáta celej dimenzie (vrátane všetkých hierarchií) do jednej tabuľky, potom vytvoríme skutočnú hviezdu. To sa ale nemusí vždy hodiť. Ak je dimenzia veľmi veľká (napríklad v prípade zákazníkov môže ísť o milióny záznamov), vyžaduje každá ďalšia popisná informácia mnoho priestoru pre ukladanie, a pritom sa môže mnohonásobne opakovať (napríklad miesto narodenia, typ klienta, …). Pokiaľ chceme miesto na diskoch ušetriť, môžeme opakujúce sa informácie oddeliť do zvláštnych tabuliek, na ktoré sa tá pôvodná bude iba odkazovať. Vzniká schéma, ktorej sa hovorí vločka. A pozrite sa – vlastne sme denormalizovaný model zase normalizovali. Keď hviezdu „rozvločkujeme“ dôkladne, bude dokonca zodpovedať tretej normálnej forme!

Cesta späť?

Už počujem hlasy, ktoré sa ozývajú: Tak prečo sme to vlastne celé robili? Na začiatku – v operatívnych systémoch – sme mali 3NF a teraz ju máme zase. To sme to tak mohli rovno nechať!

Nuž, nemohli… Ono totiž podstatný rozdiel nie je v tej normálnej forme, ale v spôsobe nazerania na svet. A ten je v oboch prípadoch prezentovaný úplne rozdielnymi prístupmi: Aký svet skutočne je (entitno relačný pohľad) v prvom prípade – a ako v ňom meriame dôležité deje (multidimenzionálny pohľad) v prípade druhom. Pokiaľ ste trochu zmätení, nič si z toho nerobte, tieto veci sa občas pletú aj v odbornej literatúre.

  

Obr. Snowflake schéma (výrez)

Je vidieť, že konštrukcia dimenzií je jednou z najcitlivejších úloh v modelovaní dátového skladu. Ale to, čo sme si zatiaľ ukázali, ešte zďaleka nie je všetko. Môžeme totiž ešte ďalej denormalizovať a normalizovať, prepájať a rozpájať, a to všetko podľa ďalších vžitých noriem. Hviezdy sa prepájajú do súhvezdí, prichádzajú snehové búrky, vznikajú  minidimenzie, subdimenzie, degenerované či rekurzívne dimenzie, faktové tabuľky bez faktov… Ale o týchto a ďalších špecialitách zase nabudúce.

Vladimír Kyjonka
BI Business Advisor, SAS
Článok je prevzatý z Computerworldu