Datový sklad
Datový sklad (anglicky Data Warehouse, případně DWH) je zvláštní typ relační databáze, která umožňuje řešit úlohy zaměřené převážně na analytické dotazování nad rozsáhlými soubory dat.
Definice datového skladu
K definici rozdílu mezi „běžnou“ relační databází a
datovým skladem se obvykle používá následujících charakteristik popsaných
Williamem Inmonem:
Orientace na subjekt
U běžné relační databáze je obvyklá snaha o co nejmenší
redundanci uložení dat, které je dosahováno jejich normalizací do třetí normální
formy a vnitřním provázáním jednotlivých logických funkčních celků. V datovém
skladu je naproti tomu řešení vždy vedeno snahou o jasnou vnitřní separaci
jednotlivých funkčních celků – výsledkem je struktura, která je čitelnější pro
uživatele (manažera, business analytika) za cenu zvýšených nároků na paměťový
prostor.
Integrovanost
Běžná provozní aplikace (program) nad relační
databází řeší určitý specifický okruh úloh nad „svými“ specifickými daty. V
datovém skladu je třeba naproti tomu shromáždit informace z mnoha různých zdrojů
a seskupit je nikoliv podle původu, ale podle logického významu (úzce souvisí s
orientací na subjekt – všechna data týkající se určité funkční oblasti potřebuji
mít „na jedné hromadě“ bez ohledu na to, odkud pocházejí).
Nízká proměnlivost
Data jsou do datového skladu obvykle nahrávána ve větších dávkach (například v
denních nebo týdenních intervalech) a pak již nejsou nijak modifikována.
Historizace
Data jsou v datovém skladu obvykle udržována v historické podobě,
nikoliv pouze v aktuálním stavu. To je dáno nutností provádění analýz zaměřených
na vývoj v čase. V běžné relační databázi je z pohledu uživatelů obvykle
zajímavý pouze aktuální stav datových objektů.
Technologické charakteristiky
datového skladu
Z požadavků na datový sklad vyplývají jeho technologické
charakteristiky:
Datový
sklad musí obsahovat nástroj pro nahrávání dat z různých datových zdrojů, tyto
zdroje mohou mít různé datové formáty a různé fyzické umístění, nemusí se
zdaleka jednat pouze o relační databáze.
Datový sklad ukládá data nikoliv s
ohledem na co nejlepší podmínky pro editaci, ale s ohledem na co nejlepší a
nejrychlejší provádění složitých dotazů – proto je pro uložení dat používána
často technologie OLAP.
Nelze předem vědět, jaké dotazy a jaké úlohy budou
chtít uživatelé nad datovým skladem v budoucnosti řešit. (V době budování
datového skladu je obvykle známý pouze typ úloh, nikoliv všechny jednotlivé
dotazy a úlohy.) Z toho vyplývá potřeba dostatečně flexibilních a přitom
uživatelsky přívětivých analytických nástrojů.
Logická struktura datového
skladu
Data v datovém skladu jsou z logického (uživatelského) pohledu členěna
do schémat – každé schéma odpovídá jedné analyzované funkční oblasti.
Jádro každého schématu tvoří jedna nebo několik faktových tabulek. V nich jsou uložena vlastní analyzovaná data – číselné a finanční hodnoty, které jsou použity k analytickým výpočtům – agregacím, třídění apod. Většinu paměťového místa v datovém skladu zabírají faktové tabulky, které obsahují detailní údaje ze všech zdrojů – tedy řádově více údajů než ostatní tabulky.
Faktové tabulky jsou pomocí cizích klíčů spojeny s dimenzemi. Dimenze jsou tabulky, které obsahují seznamy hodnot sloužících ke kategorizaci a třídění dat ve faktových tabulkách.
Příklad
V datovém skladu je třeba uložit informace o všech prodejích z
pokladen hypermarketů, data budou dále analyzována na základě doby prodeje,
prodejny, typu zboží, dodavatele, probíhajících marketingových akcí a způsobu
platby (kartou, hotově).
Schéma Prodej bude obsahovat faktovou tabulku Položky prodeje, kde bude pro každou prodanou položku uložen údaj o typu prodaného zboží, ceně a počtu kusů (případně prodané hmotnosti).
Kromě této faktové tabulky bude schéma obsahovat také dimenze pro třídění položek prodeje: časové dimenze Datum a Hodina (v rámci dne), dimenzi Prodejna, dimenzi Typ zboží, kde bude jeden řádek pro každou jednotlivou položku (například „Choceňský jogurt borůvkový 250ml“), dimenzi Kategorie zboží (obsahující řádky jako například „Jogurt“), dimenzi Oddělení (obsahující řádky jako například „Mléčné výrobky“), dimenzi Dodavatel (obsahující řádky jako například „Choceňská mlékárna a.s.“) a tak dále.
Faktová tabulka musí být pomocí cizího klíče přímo nebo nepřímo propojena s každou z těchto dimenzí.
Hvězda a vločka
V příkladu je vidět, že některé dimenze jsou jednoduché –
například pro dimenzi Prodejny stačí navrhnout tabulku pro uložení údajů o
prodejnách, na kterou bude napojena faktová tabulka.
Horší je situace v případě Typ zboží – ta se uvnitř sebe sama dále rozpadá – dimenze Kategorie zboží by vůbec nemusela být napojena na faktovou tabulku, ale na dimenzi Typ zboží, dimenze Oddělení na Kategorii zboží, dimenze Dodavatel na Typ zboží. V tomto případě mluvíme o hierarchické dimenzi.
V uložení hierarchických dimenzí mám v zásadě dvě možnosti:
Z celé hierarchie vytvořím jednu dimenzní tabulku, ve které budou údaje pro
vyšší stupně hierarchie uloženy redundantně. Vznikne schema, kde je každá
dimenzní tabulka vázána přímo na faktovou tabulku – podle tvaru svého diagramu
se takové schéma nazývá hvězda (Star schema).
Na hierarchickou dimenzi budu
aplikovat normalizační doporučení 3NF, takže pouze dimenze na nejnižším stupni
hierarchie bude vázána přímo na faktovou tabulku, ostatní pak na některou z
nižších dimenzí v hierarchické struktuře – podle tvaru svého diagramu se takové
schéma nazývá vločka (Snowflake schema).