Rozhodli jsme se postavit Data Vault. Jak to dopadlo?

Každý, kdo pracuje s daty, ví, jak je důležité mít datový sklad přizpůsobený potřebám firmy. V modelování se nejčastěji setkáváme s klasickými přístupy, jako je star nebo snowflake schéma, se známými faktovkami a dimenzemi.
Dnes bychom vám však rádi představili jiný koncept – data vault – a podělili se o naše zážitky z workshopu, kde jsme se ho pokusili implementovat.

Margo Onykiienko
18. prosince 2024

Co je to vlastně Data Vault?

Než se pustíme do podrobností, pojďme si ujasnit, co to data vault vůbec je. Jedná se o jeden z přístupů k modelování datového skladu, který byl navržen Danem Linstedtem před více než 20 lety a zaměřuje se na oddělení byznysových konceptů, jejich vlastností a vztahů mezi nimi. Důležitou součástí Data Vault je ii způsob, jak má být tato metodika implementována, a bez správného prístupu nasazení se nejedná o plnohodnotný data vault.

Model Data Vaultu stojí na třech hlavních pilířích:

  • Hub: reprezentuje byznysovou entitu (např. zákazník, zaměstnanec, produkt). Obsahuje unikátní byznysový klíč, který se v čase nemění.
  • Link: popisuje vztahy mezi huby (např. zákazník nakupuje produkt, zaměstnanec je odpovědný za zákazníka). Obsahuje kombinace byznysových klíčů.
  • Satelit: obsahuje popisné atributy hubů nebo linků, jako například jméno, oddělení zaměstnance, popis produktu nebo stav vztahu. Každý záznam má timestamp pro sledování změn.

Pro představu, model data vaultu může vypadat například takto:

Jak probíhal náš workshop?

Číst články a dívat se na videa je fajn, ale pokud se chcete něco opravdu naučit, musíte si to sami zkusit. Na našem workshopu jsme se pod vedením Richarda Sklenaříka vrhli do implementace data vaultu. Zadání bylo jednoduché: zjistit, proč se liší plánované a skutečné náklady na mzdy v jednotlivých pobočkách firmy.

Identifikovali jsme klíčové byznysové entity, tedy huby, které v našem případě byly: zaměstnanci, pobočky a položky deníku. K nim jsme vytvořili příslušné satelity a linky. Jako nástroj jsme použili dbt, konkrétně balíček datavault4dbt, a začali jsme kouzlit. Tento balíček, vyvinutý společností Scalefree, poskytuje makra pro usnadnění a standardizaci implementace jednotlivých komponent Data Vaultu. Náš finální model vypadal nějak takhle:  


Pokud jste zvyklí na strukturu snowflake schématu, může na první pohled model v data vaultu působit složitěji díky většímu množství jednotlivých prvků.Po několika hodinách práce jsme odhalili, na které pobočce a z jakého důvodu vznikají rozdíly. Ale přiznáváme – i našim zkušeným vývojářům to dalo pořádně zabrat!

Jaké výhody ma Data Vault a proč by se to mělo zvážit?

Data vault byl vyvinut jako odpověď na některé problémy klasických datových skladů. Jedním z hlavních přínosů je schopnost pracovat s různorodými zdroji dat – když máte mnoho zdrojů s různou strukturou, která se navíc často mění, data vault dokáže tato data sjednotit. Jelikož v Data Vaultu se nic nemaže, změny jsou pouze aditivní. Při změně zdroje stačí přidat novou komponentu, aniž by bylo nutné  přepisovat celý model.

Další výhodou je auditovatelnost a historizace, protože v data vaultu se data nemažou, ale pouze přidávají nové záznamy. To je obzvláště důležité v oblastech, kde je potřeba zpětně dohledat každý krok, například v bankovnictví. Díky modulárnímu designu data vault také podporuje agilní přístup, což umožňuje model budovat postupně podle priorit a rychle reagovat na měnící se požadavky byznysu.

Je všechno jen růžové?

Implementace data vaultu má svá specifika, která je důležité mít na paměti.

Zaprvé, pokud jste zvyklí na tradiční tabulky s primárními klíči a jednoznačnými vztahy mezi entitami, přechod na koncept hubů, linků a satelitů může chvíli trvat. Klíčové je, aby všichni ve vašem týmu „přepnuli“ způsob myšlení, jinak kouzlo data vaultu nebude fungovat.

Zadruhé, špatný návrh hubů a linků může vést k problémům. To však platí pro každý datový sklad, nejen pro data vault. Za třetí, nástroje: definování modelů pomocí klasického psaní SQL příkazů v data vaultu může být poměrně pracné. V současnosti jsou k dispozici dvě hlavní možnosti. První je dbt balíček datavault4dbt, který jsme měli možnost otestovat v rámci workshopu. Tento balíček se aktivně vyvíjí a nabízí širokou škálu funkcí, které usnadňují práci s data vaultem.

Druhou možností je Data Vault Builder, placený vizuální nástroj (tzv. “klikatko“), který představuje kompletní platformu pro vývoj data vaultu, avšak zároveň s sebou nese riziko určitého vendor locku.
V neposlední řadě je důležité zmínit otázku odbornosti. Odborníků na datové sklady obecně není mnoho, a specialistů na implementaci data vaultu je ještě méně. Při zavádění data vaultu proto pravděpodobně budete potřebovat podporu zkušených profesionálů, jejichž dostupnost je omezená.

Poslední věcí, kterou je nutné zmínit, je implementace a spolupráce s moderními nástroji. Data vault byl původně navržen jako řešení pro omezené výpočetní možnosti tradičních systémů. Dnes sice výpočetní výkon není problém, ale data vault čelí jiné výzvě – velkému množství joinů, které platformy jako BigQuery nemusí optimálně zvládat. Řešením je materializace průběžných kroků, nejen data martů, tedy výstupních prvků data vaultu, čímž se zachová koncept data vaultu a zároveň se tento problém eliminuje.

Je Data Vault pro vás?

Odpověď jako obvykle zní: záleží. Data vault se hodí pro střední a velké firmy s mnoha různorodými zdroji dat, kde je kladen důraz na historizaci a auditovatelnost. Implementace může být náročnější, ale přinese své ovoce, zejména pokud se často mění zdrojové systémy.
Jakmile se však naučíte přemýšlet v termínech hubů, linků a satelitů, začnete si více vážit výhod, které přináší data vault oproti klasickému modelu datového skladu.

Přečtěte si některý z našich dalších článků