{"id":92015,"date":"2020-08-21T19:42:13","date_gmt":"2020-08-21T17:42:13","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh"},"modified":"2020-08-21T19:42:13","modified_gmt":"2020-08-21T17:42:13","slug":"obzor-gibkih-metodologij-proektirovaniya-dwh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","title":{"rendered":"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V\u00fdvoj \u00falo\u017ei\u0161t\u011b je dlouh\u00fd a v\u00e1\u017en\u00fd proces. <\/p>\n<p>Mnoho v \u017eivot\u011b projektu z\u00e1vis\u00ed na tom, jak dob\u0159e je promy\u0161len\u00e1 objektov\u00e1 modela a struktura datab\u00e1ze na za\u010d\u00e1tku.<\/p>\n<p>Obvykl\u00fdm p\u0159\u00edstupem byly a z\u016fst\u00e1vaj\u00ed r\u016fzn\u00e9 varianty kombinace sch\u00e9matu \"hv\u011bzda\" s t\u0159et\u00ed norm\u00e1ln\u00ed formou. Obvykle podle principu: p\u016fvodn\u00ed data \u2014 3NF, datov\u00e9 sklady \u2014 hv\u011bzda. Tento p\u0159\u00edstup, kter\u00fd obst\u00e1l testem \u010dasu a je podlo\u017een velk\u00fdm mno\u017estv\u00edm studi\u00ed, je prvn\u00edm (a n\u011bkdy i jedin\u00fdm), co p\u0159ijde na mysl zku\u0161en\u00e9mu DWH specialistovi, kdy\u017e p\u0159em\u00fd\u0161l\u00ed o tom, jak by m\u011blo analytick\u00e9 \u00falo\u017ei\u0161t\u011b vypadat.<\/p>\n<p>Na druh\u00e9 stran\u011b se podnik\u00e1n\u00ed jako celek a po\u017eadavky z\u00e1kazn\u00edka zvl\u00e1\u0161\u0165 rychle m\u011bn\u00ed, zat\u00edmco data rostou jak \"do hloubky\", tak \"do \u0161\u00ed\u0159e\". A tady se projevuje hlavn\u00ed nedostatek hv\u011bzdy \u2014 omezen\u00e1 <b>flexibilita<\/b>.<\/p>\n<p>A pokud ve va\u0161em klidn\u00e9m a \u00fatuln\u00e9m \u017eivot\u011b DWH v\u00fdvoj\u00e1\u0159e n\u00e1hle:<\/p>\n<ul>\n<li>vznikla \u00faloha \"ud\u011blat rychle n\u011bco, a pak se pod\u00edv\u00e1me\";<\/li>\n<li>se objevil rychle se rozv\u00edjej\u00edc\u00ed projekt, s p\u0159ipojen\u00edm nov\u00fdch zdroj\u016f a p\u0159epracov\u00e1n\u00edm obchodn\u00ed modelu alespo\u0148 jednou za t\u00fdden;<\/li>\n<li>se objevil z\u00e1kazn\u00edk, kter\u00fd si nedok\u00e1\u017ee p\u0159edstavit, jak by m\u011bl syst\u00e9m vypadat a jak\u00e9 funkce by m\u011bl vykon\u00e1vat, ale je otev\u0159en experiment\u016fm a postupn\u00e9mu up\u0159es\u0148ov\u00e1n\u00ed po\u017eadovan\u00e9ho v\u00fdsledku s postupn\u00fdm p\u0159ibl\u00ed\u017een\u00edm se k n\u011bmu;<\/li>\n<li>se objevil projektov\u00fd mana\u017eer s radostnou zpr\u00e1vou: \"A nyn\u00ed m\u00e1me agiln\u00ed metodiku!\".<\/li>\n<\/ul>\n<p>\nNebo pokud v\u00e1s zkr\u00e1tka zaj\u00edm\u00e1, jak jinak lze vytv\u00e1\u0159et \u00falo\u017ei\u0161t\u011b \u2014 v\u00edtejte pod kat!<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/59cd70ca3af4841d0c5c9bfbbd7636a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Co znamen\u00e1 \"flexibilita\"<\/h3>\n<p>\nNejprve si ujasn\u011bme, jak\u00e9 vlastnosti by m\u011bla m\u00edt syst\u00e9m, aby mohl b\u00fdt nazv\u00e1n \"flexibiln\u00edm\". <\/p>\n<p>Je t\u0159eba poznamenat, \u017ee popisovan\u00e9 vlastnosti by m\u011bly platit konkr\u00e9tn\u011b pro <b>syst\u00e9mu<\/b>, a ne pro <b>proces <\/b>jeho v\u00fdvoje. Proto pokud jste cht\u011bli \u010d\u00edst o Agile jako metodologii v\u00fdvoje, rad\u011bji si p\u0159e\u010dt\u011bte jin\u00e9 \u010dl\u00e1nky. Nap\u0159\u00edklad zde, na Habr, je spousta zaj\u00edmav\u00e9ho materi\u00e1lu (nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/436178\/\">p\u0159ehledov\u00fdch<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/284012\/\">praktick\u00fdch<\/a><\/noindex>, tak i <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dataart\/blog\/245605\/\">probl\u00e9mov\u00fdch<\/a><\/noindex>).<\/p>\n<p>To nen\u00ed znamen\u00e1, \u017ee proces v\u00fdvoje a struktura DWH jsou v\u016fbec nesouvisej\u00edc\u00ed. Obecn\u011b by m\u011blo b\u00fdt p\u0159i v\u00fdvoji podle Agile flexibiln\u00ed datov\u00e9 \u00falo\u017ei\u0161t\u011b podstatn\u011b snaz\u0161\u00ed. Nicm\u00e9n\u011b v praxi se \u010dast\u011bji setk\u00e1v\u00e1me s variantami v\u00fdvoje podle klasick\u00e9ho DWH podle Kimballa a DataVault \u2014 podle vodop\u00e1du, ne\u017e s \u0161\u0165astn\u00fdmi shodami flexibility v jej\u00edch dvou podob\u00e1ch na jednom projektu.<\/p>\n<p>Jak\u00e9 funkce by tedy m\u011blo m\u00edt flexibiln\u00ed datov\u00e9 \u00falo\u017ei\u0161t\u011b? Zde lze vyzdvihnout t\u0159i body:<\/p>\n<ol>\n<li><b>Brzk\u00e9 dod\u00e1n\u00ed a rychl\u00e9 \u00fapravy<\/b> \u2014 to znamen\u00e1, \u017ee v ide\u00e1ln\u00edm p\u0159\u00edpad\u011b by m\u011bl b\u00fdt prvn\u00ed obchodn\u00ed v\u00fdsledek (nap\u0159\u00edklad prvn\u00ed funk\u010dn\u00ed zpr\u00e1vy) dosa\u017een co nejd\u0159\u00edve, tedy je\u0161t\u011b p\u0159ed t\u00edm, ne\u017e je syst\u00e9m zcela navr\u017een a implementov\u00e1n. Ka\u017ed\u00e1 n\u00e1sleduj\u00edc\u00ed \u00faprava by tak\u00e9 m\u011bla zabrat co nejm\u00e9n\u011b \u010dasu.<\/li>\n<li><b>Iterativn\u00ed \u00fapravy<\/b> \u2014 to znamen\u00e1, \u017ee ka\u017ed\u00e1 n\u00e1sleduj\u00edc\u00ed \u00faprava by v ide\u00e1ln\u00edm p\u0159\u00edpad\u011b nem\u011bla zasahovat do ji\u017e funguj\u00edc\u00edho funk\u010dnosti. Tento aspekt se \u010dasto st\u00e1v\u00e1 nejv\u011bt\u0161\u00edm no\u010dn\u00ed m\u016frou na velk\u00fdch projektech \u2014 d\u0159\u00edve \u010di pozd\u011bji za\u010d\u00ednaj\u00ed jednotliv\u00e9 objekty m\u00edt tolik vazeb, \u017ee je snaz\u0161\u00ed zcela zopakovat logiku v kopii vedle, ne\u017e p\u0159idat pole do st\u00e1vaj\u00edc\u00ed tabulky. A pokud v\u00e1s p\u0159ekvapuje, \u017ee anal\u00fdza vlivu \u00fapravy na st\u00e1vaj\u00edc\u00ed objekty m\u016f\u017ee trvat d\u00e9le ne\u017e samotn\u00e1 \u00faprava \u2014 pravd\u011bpodobn\u011b jste je\u0161t\u011b nepracovali s velk\u00fdmi DWH v bankovnictv\u00ed nebo telekomunikac\u00edch.<\/li>\n<li><b>Nep\u0159etr\u017eit\u00e1 adaptace na m\u011bn\u00edc\u00ed se obchodn\u00ed po\u017eadavky<\/b> \u2014 celkov\u00e1 objektov\u00e1 struktura by m\u011bla b\u00fdt navr\u017eena nejen s ohledem na mo\u017en\u00e9 roz\u0161\u00ed\u0159en\u00ed, ale s v\u00fdhledem na to, \u017ee sm\u011br tohoto dal\u0161\u00edho roz\u0161\u00ed\u0159en\u00ed si ani nedok\u00e1\u017eete p\u0159edstavit v okam\u017eiku n\u00e1vrhu.<\/li>\n<\/ol>\n<p>\nA ano, spln\u011bn\u00ed v\u0161ech t\u011bchto po\u017eadavk\u016f v jednom syst\u00e9mu je mo\u017en\u00e9 (samoz\u0159ejm\u011b za ur\u010dit\u00fdch okolnost\u00ed a s n\u011bkolika v\u00fdhradami).<\/p>\n<p>N\u00ed\u017ee se pod\u00edv\u00e1m na dv\u011b nejobl\u00edben\u011bj\u0161\u00ed metodologie flexibiln\u00edho designu pro DWH \u2014 <b>Anchor model<\/b> a <b>Data Vault<\/b>. Mezi skv\u011bl\u00fdmi metodami, jako je nap\u0159\u00edklad EAV, 6NF (v \u010dist\u00e9 podob\u011b) a v\u0161echno, co se t\u00fd\u010de NoSQL \u0159e\u0161en\u00ed, z\u016fst\u00e1v\u00e1 mimo pozornost \u2013 ne proto, \u017ee by n\u011bjak\u00fdm zp\u016fsobem byly hor\u0161\u00ed, a ani ne proto, \u017ee by v tomto p\u0159\u00edpad\u011b \u010dl\u00e1nek hrozil, \u017ee se zm\u011bn\u00ed na objem pr\u016fm\u011brn\u00e9 disertace. V\u0161echny tyto \u0159e\u0161en\u00ed spadaj\u00ed do trochu jin\u00e9 t\u0159\u00eddy \u2013 bu\u010f do metod, kter\u00e9 m\u016f\u017eete aplikovat ve specifick\u00fdch p\u0159\u00edpadech, nez\u00e1visle na celkov\u00e9 architektu\u0159e va\u0161eho projektu (jako EAV), nebo do glob\u00e1ln\u011b jin\u00fdch paradigmat ukl\u00e1d\u00e1n\u00ed informac\u00ed (jako nap\u0159\u00edklad grafov\u00e9 datab\u00e1ze a jin\u00e9 varianty NoSQL).<\/p>\n<h3>Probl\u00e9my \"klasick\u00e9ho\" p\u0159\u00edstupu a jejich \u0159e\u0161en\u00ed v flexibiln\u00edch metodologi\u00edch<\/h3>\n<p>\n<i>Kdy\u017e mluv\u00edm o \"klasick\u00e9m\" p\u0159\u00edstupu, mysl\u00edm t\u00edm starou dobrou hv\u011bzdu (bez ohledu na konkr\u00e9tn\u00ed implementaci podkladov\u00fdch vrstev, a\u0165 mi odpust\u00ed p\u0159\u00edvr\u017eenci Kimballa, Inmona a CDM).<br \/>\n<\/i><\/p>\n<h4>1. Tvrd\u00e1 kardinalita vazeb<\/h4>\n<p>\nDo takov\u00e9ho modelu je zakotveno jasn\u00e9 rozd\u011blen\u00ed dat na <b>dimenze (Dimension)<\/b> a <b>fakty (Fact)<\/b>. A to d\u00e1v\u00e1 smysl \u2013 anal\u00fdza dat se ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f soust\u0159ed\u00ed pr\u00e1v\u011b na anal\u00fdzu ur\u010dit\u00fdch \u010d\u00edseln\u00fdch ukazatel\u016f (fakt\u016f) v ur\u010dit\u00fdch \u0159ezech (dimenz\u00edch).<\/p>\n<p>P\u0159itom jsou vztahy mezi objekty zakotveny jako vazby mezi tabulkami podle ciz\u00edho kl\u00ed\u010de. To vypad\u00e1 docela p\u0159irozen\u011b, ale okam\u017eit\u011b vede k prvn\u00edmu omezen\u00ed flexibility \u2013 <b>tvrd\u00e9mu ur\u010den\u00ed kardinality vazeb<\/b>.<\/p>\n<p>To znamen\u00e1, \u017ee na f\u00e1zi n\u00e1vrhu tabulek mus\u00edte p\u0159esn\u011b ur\u010dit, zda ka\u017ed\u00e1 dvojice spojen\u00fdch objekt\u016f m\u016f\u017ee m\u00edt vztah mnoha k mnoh\u00fdm, nebo jen 1 k mnoh\u00fdm, a v \"jak\u00e9m sm\u011bru\". Od toho p\u0159\u00edmo z\u00e1vis\u00ed, v kter\u00e9 tabulce bude prim\u00e1rn\u00ed kl\u00ed\u010d a v kter\u00e9 \u2013 ciz\u00ed. Zm\u011bna tohoto vztahu p\u0159i obdr\u017een\u00ed nov\u00fdch po\u017eadavk\u016f pravd\u011bpodobn\u011b povede k p\u0159epracov\u00e1n\u00ed datab\u00e1ze.<\/p>\n<p>Nap\u0159\u00edklad, p\u0159i n\u00e1vrhu objektu \"pokladn\u00ed doklad\" jste na z\u00e1klad\u011b up\u0159\u00edmn\u00fdch z\u00e1ruk odd\u011blen\u00ed prodeje zakotvili mo\u017enost p\u016fsoben\u00ed <b>jedn\u00e9 promo akce na n\u011bkolik dokladov\u00fdch polo\u017eek<\/b> (ale ne naopak):<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/15226cb79c30364d94147383ba36a8fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA po n\u011bjak\u00e9 dob\u011b kolegov\u00e9 zavedli novou marketingovou strategii, ve kter\u00e9 m\u016f\u017ee na jednu a tut\u00e9\u017e polo\u017eku p\u016fsobit <b>n\u011bkolik promo akc\u00ed sou\u010dasn\u011b<\/b>. A nyn\u00ed mus\u00edte upravit tabulky, \u010d\u00edm\u017e vytvo\u0159\u00edte spojen\u00ed jako samostatn\u00fd objekt. <\/p>\n<p>(V\u0161echny odvozen\u00e9 objekty, ve kter\u00fdch doch\u00e1z\u00ed k p\u0159ipojen\u00ed konta na promo, nyn\u00ed tak\u00e9 pot\u0159ebuj\u00ed \u00fapravy).<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/3c4d84a31088660257d74c4c703071e0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Vazby v Data Vault a Anchor Model<\/b><\/p>\n<p>Vyhnout se takov\u00e9 situaci se uk\u00e1zalo jako docela jednoduch\u00e9: nen\u00ed t\u0159eba v\u011b\u0159it obchodn\u00edmu odd\u011blen\u00ed, to sta\u010d\u00ed <b>v\u0161echny vazby p\u016fvodn\u011b uchov\u00e1vat v samostatn\u00fdch tabulk\u00e1ch<\/b> a zpracov\u00e1vat jako mnoho-k-mnoha. <\/p>\n<p>Takov\u00fd p\u0159\u00edstup navrhl <b>Dan Linstedt<\/b> jako sou\u010d\u00e1st paradigmatu <b>Data Vault<\/b> a byl pln\u011b podporov\u00e1n <b>Lars R\u00f6nnb\u00e4ck<\/b> v <b>Yakovou Modelou<\/b>.<\/p>\n<p>Nakonec dost\u00e1v\u00e1me prvn\u00ed charakteristickou vlastnost flexibiln\u00edch metodologi\u00ed:<\/p>\n<blockquote><p>Vazby mezi objekty nejsou uchov\u00e1v\u00e1ny v atributech nad\u0159azen\u00fdch entit, ale p\u0159edstavuj\u00ed samostatn\u00fd typ objekt\u016f.<\/p><\/blockquote>\n<p>V <b>Data Vault<\/b> takov\u00e9 vazebn\u00e9 tabulky se naz\u00fdvaj\u00ed <b>Link<\/b>, a v <b>Yakovou Modelou<\/b> \u2014 <b>Tie<\/b>. Na prvn\u00ed pohled se velmi podobaj\u00ed, i kdy\u017e se jejich n\u00e1zvy neomezuj\u00ed jen na to (o \u010dem\u017e bude \u0159e\u010d n\u00ed\u017ee). V obou architektur\u00e1ch mohou vazebn\u00e9 tabulky spojit <b>libovoln\u00fd po\u010det entit<\/b> (nen\u00ed nutn\u00e9 2).<\/p>\n<p>Tento na prvn\u00ed pohled nadbytek poskytuje z\u00e1sadn\u00ed flexibilitu p\u0159i \u00faprav\u00e1ch. Takov\u00e1 struktura se st\u00e1v\u00e1 tolerantn\u00ed nejen v\u016f\u010di zm\u011bn\u00e1m kardin\u00e1lnost\u00ed existuj\u00edc\u00edch vazeb, ale i k p\u0159id\u00e1v\u00e1n\u00ed nov\u00fdch \u2014 pokud nyn\u00ed bude m\u00edt pozice na \u00fa\u010dtence tak\u00e9 odkaz na pokladn\u00edka, kter\u00fd ji vytvo\u0159il, vznik takov\u00e9 vazby se stane jednodu\u0161e nadstavbou nad existuj\u00edc\u00edmi tabulkami bez vlivu na jak\u00e9koli existuj\u00edc\u00ed objekty a procesy.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6a3b942a6e5d04dcbe2ff0881ebdf1bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4>2. Duplicitn\u00ed data<\/h4>\n<p>\nDruh\u00fd probl\u00e9m, kter\u00fd flexibiln\u00ed architektury \u0159e\u0161\u00ed, je m\u00e9n\u011b z\u0159ejm\u00fd a p\u0159edev\u0161\u00edm typick\u00fd pro <b>m\u011b\u0159en\u00ed typu SCD2<\/b> (pomalu se m\u011bn\u00edc\u00ed m\u011b\u0159en\u00ed druh\u00e9ho typu), i kdy\u017e nejen pro n\u011b.<\/p>\n<p>V klasick\u00e9m skladu m\u011b\u0159en\u00ed obvykle p\u0159edstavuje tabulku, kter\u00e1 obsahuje surrogate kl\u00ed\u010d (jako PK) a tak\u00e9 sadu obchodn\u00edch kl\u00ed\u010d\u016f a atribut\u016f v samostatn\u00fdch sloupc\u00edch. <\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/059dd47b2302b58c19a0144061b78cb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPokud m\u011b\u0159en\u00ed podporuje verzov\u00e1n\u00ed, jsou k standardn\u00ed sad\u011b pol\u00ed p\u0159id\u00e1ny hranice doby platnosti verze a v jednom \u0159\u00e1dku v zdroji se objevuje n\u011bkolik verz\u00ed ve skladu (po jedn\u00e9 na ka\u017edou zm\u011bnu verzovac\u00edch atribut\u016f).<\/p>\n<p>Pokud obsahuje m\u011b\u0159en\u00ed alespo\u0148 jeden \u010dasto se m\u011bn\u00edc\u00ed verzovan\u00fd atribut, bude po\u010det verz\u00ed tohoto m\u011b\u0159en\u00ed zna\u010dn\u00fd (i kdy\u017e ostatn\u00ed atributy nejsou verzovan\u00e9 nebo se nikdy nem\u011bn\u00ed), a pokud je t\u011bchto atribut\u016f v\u00edce, m\u016f\u017ee po\u010det verz\u00ed geometricky vzr\u016fst s jejich po\u010dtem. Takov\u00e9 m\u011b\u0159en\u00ed m\u016f\u017ee zab\u00edrat zna\u010dn\u00fd prostor na disku, p\u0159i\u010dem\u017e v\u011bt\u0161ina ulo\u017een\u00fdch dat jsou pouze duplicitn\u00ed hodnoty nem\u011bnn\u00fdch atribut\u016f z jin\u00fdch \u0159\u00e1dk\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/f3d5a4fd83a5ef36355961302173791d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159itom se velmi \u010dasto pou\u017e\u00edv\u00e1 i <b>denormalizace<\/b> \u2014 \u010d\u00e1st atribut\u016f je z\u00e1m\u011brn\u011b ukl\u00e1d\u00e1na jako hodnota, nikoli jako odkaz na slovn\u00edk nebo jin\u00e9 m\u011b\u0159en\u00ed. Tento p\u0159\u00edstup urychluje p\u0159\u00edstup k dat\u016fm a sni\u017euje po\u010det spojen\u00ed p\u0159i dotazov\u00e1n\u00ed na m\u011b\u0159en\u00ed.<\/p>\n<p>Obvykle to vede k tomu, \u017ee <b>stejn\u00e9 informace jsou ulo\u017eeny sou\u010dasn\u011b na n\u011bkolika m\u00edstech<\/b>. Nap\u0159\u00edklad informace o regionu bydli\u0161t\u011b a p\u0159\u00edslu\u0161nosti kategorie klienta mohou b\u00fdt sou\u010dasn\u011b ulo\u017eeny v m\u011b\u0159en\u00edch \u201eKlient\u201c a v faktech \u201eN\u00e1kup\u201c, \u201eDoprava\u201c a \u201eObr\u00e1zky do call centra\u201c, stejn\u011b jako v tabulce spojen\u00ed \u201eKlient \u2014 Klientsk\u00fd mana\u017eer\u201c.<\/p>\n<p>Obecn\u011b plat\u00ed, \u017ee v\u00fd\u0161e popsan\u00e9 se vztahuje i na b\u011b\u017en\u00e1 (ne verzovan\u00e1) m\u011b\u0159en\u00ed, ale ve verzovan\u00fdch mohou m\u00edt jin\u00fd rozsah: vznik nov\u00e9 verze objektu (zejm\u00e9na zp\u011btn\u011b) nevede pouze k aktualizaci v\u0161ech souvisej\u00edc\u00edch tabulek, ale k kask\u00e1dov\u00e9mu vzniku nov\u00fdch verz\u00ed souvisej\u00edc\u00edch objekt\u016f \u2014 kdy\u017e Tabulka 1 je pou\u017eita p\u0159i vytv\u00e1\u0159en\u00ed Tabulky 2, a Tabulka 2 \u2014 p\u0159i vytv\u00e1\u0159en\u00ed Tabulky 3 atd. I kdy\u017e \u017e\u00e1dn\u00fd atribut Tabulky 1 se nepod\u00edl\u00ed na vytv\u00e1\u0159en\u00ed Tabulky 3 (a \u00fa\u010dastn\u00ed se jin\u00e9 atributy Tabulky 2, z\u00edskan\u00e9 z jin\u00fdch zdroj\u016f), verzov\u00e1 aktualizace t\u00e9to konstrukce povede minim\u00e1ln\u011b k dodate\u010dn\u00fdm n\u00e1klad\u016fm a maxim\u00e1ln\u011b k zbyte\u010dn\u00fdm verz\u00edm v Tabulce 3, kter\u00e1 je tu vlastn\u011b \u201enevinn\u00e1\u201c, a d\u00e1le po \u0159et\u011bzci.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/2935f93abc46f02bdc528accda2af758.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>3. Neline\u00e1rn\u00ed slo\u017eitost \u00faprav<\/h4>\n<p>\nP\u0159itom ka\u017ed\u00e1 nov\u00e1 vitrina, kter\u00e1 je budov\u00e1na na z\u00e1klad\u011b jin\u00e9, zvy\u0161uje po\u010det m\u00edst, kde se mohou data \u201erozch\u00e1zet\u201c p\u0159i prov\u00e1d\u011bn\u00ed zm\u011bn v ETL. To na opl\u00e1tku vede k n\u00e1r\u016fstu slo\u017eitosti (a trv\u00e1n\u00ed) ka\u017ed\u00e9 dal\u0161\u00ed \u00fapravy.<\/p>\n<p>Pokud se v\u00fd\u0161e uveden\u00e9 t\u00fdk\u00e1 syst\u00e9m\u016f s m\u00e1lo upravovan\u00fdmi ETL procesy, je mo\u017en\u00e9 \u017e\u00edt v takov\u00e9 paradigm\u011b \u2013 sta\u010d\u00ed pe\u010dliv\u011b sledovat, aby nov\u00e9 \u00fapravy byly spr\u00e1vn\u011b za\u0159azeny do v\u0161ech souvisej\u00edc\u00edch objekt\u016f. Pokud v\u0161ak k \u00faprav\u00e1m doch\u00e1z\u00ed \u010dasto, v\u00fdznamn\u011b roste pravd\u011bpodobnost, \u017ee se n\u00e1hodou \"propust\u00ed\" n\u011bkolik vazeb.<\/p>\n<p>Pokud nav\u00edc zohledn\u00edme, \u017ee \"verzovan\u00fd\" ETL je podstatn\u011b slo\u017eit\u011bj\u0161\u00ed ne\u017e \"neverzovan\u00fd\", st\u00e1v\u00e1 se obt\u00ed\u017en\u00fdm vyhnout se chyb\u00e1m p\u0159i \u010dast\u00e9 \u00faprav\u011b tohoto syst\u00e9mu.<\/p>\n<h3>Ukl\u00e1d\u00e1n\u00ed objekt\u016f a atribut\u016f v Data Vault a Anchor Modelu<\/h3>\n<p>\nP\u0159\u00edstup, kter\u00fd auto\u0159i flexibiln\u00edch architektur navrhuj\u00ed, lze formulovat takto:<\/p>\n<blockquote><p>Je nutn\u00e9 odd\u011blit to, co se m\u011bn\u00ed, od toho, co z\u016fst\u00e1v\u00e1 nem\u011bnn\u00e9. To znamen\u00e1 ukl\u00e1dat kl\u00ed\u010de odd\u011blen\u011b od atribut\u016f.<\/p><\/blockquote>\n<p> P\u0159itom bychom nem\u011bli zam\u011b\u0148ovat <b>neverzovan\u00fd<\/b> atribut s <b>nem\u011bnn\u00fdm<\/b>: prvn\u00ed neuchov\u00e1v\u00e1 historii sv\u00fdch zm\u011bn, ale m\u016f\u017ee se m\u011bnit (nap\u0159\u00edklad p\u0159i oprav\u011b chybn\u00e9ho zad\u00e1n\u00ed nebo p\u0159i z\u00edsk\u00e1n\u00ed nov\u00fdch dat), druh\u00fd \u2013 nikdy se nem\u011bn\u00ed.<\/p>\n<p>N\u00e1zory na to, co lze pova\u017eovat za nem\u011bnn\u00e9 v Data Vault a Anchor modelu, se li\u0161\u00ed.<\/p>\n<p>Z pohledu architektury <b>Data Vault<\/b>, za nem\u011bnn\u00e9 lze pova\u017eovat <b>celou sadu kl\u00ed\u010d\u016f<\/b> \u2013 p\u0159irozen\u00e9 (I\u010cO organizace, k\u00f3d zbo\u017e\u00ed v syst\u00e9mu zdroje atd.) a surrogate. P\u0159itom ostatn\u00ed atributy lze rozd\u011blit do skupin podle zdroje a\/nebo \u010detnosti zm\u011bn a <b>pro ka\u017edou skupinu v\u00e9st samostatnou tabulku<\/b> s nez\u00e1visl\u00fdm souborem verz\u00ed.<\/p>\n<p>V paradigmatu <b>Anchor Model<\/b> je nem\u011bnn\u00fd pova\u017eov\u00e1n <b>pouze surrogate kl\u00ed\u010d<\/b> entit. V\u0161e ostatn\u00ed (v\u010detn\u011b p\u0159irozen\u00fdch kl\u00ed\u010d\u016f) je jednodu\u0161e zvl\u00e1\u0161tn\u00ed p\u0159\u00edpad jeho atribut\u016f. P\u0159itom <b>v\u0161echny atributy jsou ve v\u00fdchoz\u00edm nastaven\u00ed nez\u00e1visl\u00e9 na sob\u011b<\/b>, proto pro ka\u017ed\u00fd atribut by m\u011bla b\u00fdt vytvo\u0159ena <b>samostatn\u00e1 tabulka<\/b>.<\/p>\n<p>V <b>Data Vault<\/b> tabulky, obsahuj\u00edc\u00ed kl\u00ed\u010de entit, se naz\u00fdvaj\u00ed <b>Huby (Hub)<\/b>. Huby v\u017edy obsahuj\u00ed pevnou sadu pol\u00ed:<\/p>\n<ul>\n<li>P\u0159irozen\u00e9 kl\u00ed\u010de entity<\/li>\n<li>Surrogate kl\u00ed\u010d<\/li>\n<li>Odkaz na zdroj<\/li>\n<li>\u010cas p\u0159id\u00e1n\u00ed z\u00e1znamu<\/li>\n<\/ul>\n<p>\nZ\u00e1znamy v Hubech <b>se nikdy nezm\u011bn\u00ed a nemaj\u00ed verze<\/b>. Vzhledem k tomu, \u017ee jsou extern\u011b huby velmi podobn\u00e9 tabulk\u00e1m typu ID-map, kter\u00e9 se pou\u017e\u00edvaj\u00ed v n\u011bkter\u00fdch syst\u00e9mech pro generov\u00e1n\u00ed surrogate, doporu\u010duje se u Data Vault pou\u017e\u00edvat jako surrogate nikoliv celo\u010d\u00edselnou sekvenci, ale hash z mno\u017einy obchodn\u00edch kl\u00ed\u010d\u016f. Tento p\u0159\u00edstup usnad\u0148uje na\u010d\u00edt\u00e1n\u00ed vazeb a atribut\u016f ze zdroj\u016f (nen\u00ed t\u0159eba se spojovat do hubu pro z\u00edsk\u00e1n\u00ed surrogate, sta\u010d\u00ed pouze spo\u010d\u00edtat hash ze p\u0159irozen\u00e9ho kl\u00ed\u010de), ale m\u016f\u017ee zp\u016fsobit dal\u0161\u00ed probl\u00e9my (nap\u0159\u00edklad souvisej\u00edc\u00ed s kolizemi, velikost\u00ed p\u00edsmen a neviditeln\u00fdmi symboly v \u0159et\u011bzc\u00edch kl\u00ed\u010d\u016f atd.), proto nen\u00ed obecn\u011b p\u0159ij\u00edman\u00fd.<\/p>\n<p>V\u0161echny ostatn\u00ed atributy entit se ukl\u00e1daj\u00ed do speci\u00e1ln\u00edch tabulek, naz\u00fdvan\u00fdch <b>Satelity (Satellit)<\/b>. Jeden hub m\u016f\u017ee m\u00edt n\u011bkolik satelit\u016f, kter\u00e9 uchov\u00e1vaj\u00ed r\u016fzn\u00e9 soubory atribut\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/e145f211b8cfb51894e6e1789991e1cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRozd\u011blen\u00ed atribut\u016f mezi satelity prob\u00edh\u00e1 na principu <b>spole\u010dn\u00e9 zm\u011bny<\/b> \u2014 v jednom satelitu mohou b\u00fdt ulo\u017eeny nevyd\u00e1van\u00e9 atributy (nap\u0159\u00edklad datum narozen\u00ed a SNILS pro fyzick\u00e9 osoby), v jin\u00e9m \u2014 z\u0159\u00eddka m\u011bn\u011bn\u00e9 verze (nap\u0159\u00edklad p\u0159\u00edjmen\u00ed a \u010d\u00edslo pasu), ve t\u0159et\u00edm \u2014 \u010dasto m\u011bn\u011bn\u00e9 (nap\u0159\u00edklad dodac\u00ed adresa, kategorie, datum posledn\u00ed objedn\u00e1vky atd.). Verze se p\u0159itom sleduj\u00ed na \u00farovni jednotliv\u00fdch satelit\u016f, nikoli entity jako celku, proto je \u00fa\u010deln\u00e9 rozd\u011blovat atributy tak, aby pr\u016fnik verz\u00ed uvnit\u0159 jednoho satelitu byl minim\u00e1ln\u00ed (co\u017e sni\u017euje celkov\u00fd po\u010det ulo\u017een\u00fdch verz\u00ed). <\/p>\n<p>Tak\u00e9, pro optimalizaci procesu na\u010d\u00edt\u00e1n\u00ed dat, se do samostatn\u00fdch satelit\u016f \u010dasto vy\u010dle\u0148uj\u00ed atributy z\u00edskan\u00e9 z r\u016fzn\u00fdch zdroj\u016f.<\/p>\n<p>Satelity jsou spojeny s hubem pomoc\u00ed <b>ciz\u00edho kl\u00ed\u010de<\/b> (co\u017e odpov\u00edd\u00e1 kardinalit\u011b 1-k-mnoha). To znamen\u00e1, \u017ee v\u00edcen\u00e1sobn\u00e9 hodnoty atribut\u016f (nap\u0159\u00edklad n\u011bkolik kontakt\u016f telefonn\u00edch \u010d\u00edsel u jednoho klienta) jsou podporov\u00e1ny touto architekturou \u201eve defaultu\u201c.<\/p>\n<p>V <b>Model zakotven\u00ed (Anchor Model)<\/b> tabulky, kter\u00e9 uchov\u00e1vaj\u00ed kl\u00ed\u010de, se naz\u00fdvaj\u00ed <b>Zakotven\u00ed (Anchor)<\/b>. A uchov\u00e1vaj\u00ed: <\/p>\n<ul>\n<li><b>Pouze surrogate kl\u00ed\u010de<\/b><\/li>\n<li>Odkaz na zdroj<\/li>\n<li>\u010cas p\u0159id\u00e1n\u00ed z\u00e1znamu<\/li>\n<\/ul>\n<p>\nP\u0159irozen\u00e9 kl\u00ed\u010de z pohledu Modelu zakotven\u00ed se pova\u017euj\u00ed za <b>b\u011b\u017en\u00e9 atributy<\/b>. Tato varianta se m\u016f\u017ee zd\u00e1t slo\u017eit\u011bj\u0161\u00ed na pochopen\u00ed, ale poskytuje mnohem v\u011bt\u0161\u00ed prostor pro identifikaci objektu.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/0bf941581fd1177eda228d4429cf69db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNap\u0159\u00edklad pokud jsou \u00fadaje o jedn\u00e9 a t\u00e9\u017ee entit\u011b z\u00edsk\u00e1v\u00e1ny z r\u016fzn\u00fdch syst\u00e9m\u016f, z nich\u017e ka\u017ed\u00fd pou\u017e\u00edv\u00e1 sv\u016fj vlastn\u00ed p\u0159irozen\u00fd kl\u00ed\u010d. V Data Vault to m\u016f\u017ee v\u00e9st k pom\u011brn\u011b slo\u017eit\u00fdm konstrukc\u00edm, kter\u00e9 zahrnuj\u00ed n\u011bkolik hub\u016f (po jednom na zdroj + spojuj\u00edc\u00ed master-verzi), zat\u00edmco v J\u00e1drov\u00e9m modelu ka\u017ed\u00fd p\u0159irozen\u00fd kl\u00ed\u010d zdroje se dost\u00e1v\u00e1 do sv\u00e9ho atributu a m\u016f\u017ee b\u00fdt pou\u017e\u00edv\u00e1n p\u0159i nahr\u00e1v\u00e1n\u00ed nez\u00e1visle na v\u0161ech ostatn\u00edch. <\/p>\n<p>Ale zde se skr\u00fdv\u00e1 i jeden z\u00e1ludn\u00fd moment: pokud se v jedn\u00e9 entit\u011b spojuj\u00ed atributy z r\u016fzn\u00fdch syst\u00e9m\u016f, pravd\u011bpodobn\u011b existuj\u00ed ur\u010dit\u00e9 <b>pravidla \"slu\u010dov\u00e1n\u00ed\"<\/b>, podle kter\u00fdch mus\u00ed syst\u00e9m rozum\u011bt tomu, \u017ee z\u00e1znamy z r\u016fzn\u00fdch zdroj\u016f odpov\u00eddaj\u00ed jednomu objektu entity. <\/p>\n<p>V <b>Data Vault<\/b> Tato pravidla pravd\u011bpodobn\u011b stanov\u00ed formov\u00e1n\u00ed <b>\"surrog\u00e1tn\u00edho hubu\" master-entity<\/b> a nijak neovlivn\u00ed Huby, kter\u00e9 uchov\u00e1vaj\u00ed p\u0159irozen\u00e9 kl\u00ed\u010de zdroj\u016f a jejich p\u016fvodn\u00ed atributy. Pokud se v ur\u010dit\u00e9m okam\u017eiku pravidla slu\u010dov\u00e1n\u00ed zm\u011bn\u00ed (nebo p\u0159ijdou aktualizace atribut\u016f, podle kter\u00fdch se prov\u00e1d\u00ed), sta\u010d\u00ed p\u0159etvo\u0159it surrog\u00e1tn\u00ed huby.<\/p>\n<p>V <b>J\u00e1drov\u00fd model<\/b> by takov\u00e1 entita pravd\u011bpodobn\u011b m\u011bla b\u00fdt ulo\u017eena v <b>jedin\u00e9m j\u00e1dru<\/b>. To znamen\u00e1, \u017ee v\u0161echny atributy, bez ohledu na to, z jak\u00e9ho zdroje byly z\u00edsk\u00e1ny, budou p\u0159i\u0159azeny k jednomu a tomu sam\u00e9mu surrogate. Rozd\u011blit chybn\u011b slit\u00e9 z\u00e1znamy a obecn\u011b sledovat aktu\u00e1lnost slu\u010dov\u00e1n\u00ed v takov\u00e9m syst\u00e9mu m\u016f\u017ee b\u00fdt podstatn\u011b obt\u00ed\u017en\u011bj\u0161\u00ed, zejm\u00e9na pokud jsou pravidla dostate\u010dn\u011b slo\u017eit\u00e1 a \u010dasto se m\u011bn\u00ed, a jeden a tent\u00fd\u017e atribut m\u016f\u017ee b\u00fdt z\u00edsk\u00e1n z r\u016fzn\u00fdch zdroj\u016f (i kdy\u017e je p\u0159esn\u011b mo\u017en\u00e9, proto\u017ee ka\u017ed\u00e1 verze atributu uchov\u00e1v\u00e1 odkaz na sv\u016fj zdroj).<\/p>\n<p>V ka\u017ed\u00e9m p\u0159\u00edpad\u011b, pokud je ve va\u0161\u00ed syst\u00e9mu p\u0159edpokl\u00e1d\u00e1na realizace funk\u010dnosti <b>deduplika\u010dn\u00edho, slu\u010dov\u00e1n\u00ed z\u00e1znam\u016f a dal\u0161\u00edch prvk\u016f MDM<\/b>, je d\u016fle\u017eit\u00e9 se obzvl\u00e1\u0161\u0165 pe\u010dliv\u011b sezn\u00e1mit s aspekty uchov\u00e1v\u00e1n\u00ed p\u0159irozen\u00fdch kl\u00ed\u010d\u016f v flexibiln\u00edch metodologi\u00edch. Pravd\u011bpodobn\u011b slo\u017eit\u011bj\u0161\u00ed konstrukce Data Vault se najednou uk\u00e1\u017ee jako bezpe\u010dn\u011bj\u0161\u00ed z pohledu chyb slu\u010dov\u00e1n\u00ed.<\/p>\n<p><b>J\u00e1drov\u00fd model<\/b> ve skute\u010dnosti tak\u00e9 zahrnuje dal\u0161\u00ed typ objektu naz\u00fdvan\u00fd <b>Uzlem (Knot)<\/b> v podstat\u011b jde o speci\u00e1ln\u00ed <b>degenerovan\u00fd typ j\u00e1dra<\/b>, kter\u00fd m\u016f\u017ee obsahovat pouze jeden atribut. Uzly se p\u0159edpokl\u00e1daj\u00ed k pou\u017eit\u00ed pro uchov\u00e1v\u00e1n\u00ed ploch\u00fdch slovn\u00edk\u016f (nap\u0159\u00edklad pohlav\u00ed, rodinn\u00fd stav, kategorie z\u00e1kaznick\u00e9ho servisu atd.). Na rozd\u00edl od Kotvy, Uzly <b>nemaj\u00ed \u017e\u00e1dn\u00e9 souvisej\u00edc\u00ed tabulky atribut\u016f<\/b>, a jejich jedin\u00fd atribut (n\u00e1zev) se v\u017edy ukl\u00e1d\u00e1 do jedn\u00e9 tabulky s kl\u00ed\u010dem. Uzly se spojuj\u00ed s Kotvami prost\u0159ednictv\u00edm vztahov\u00fdch tabulek (Tie), stejn\u011b jako kotvy mezi sebou.<\/p>\n<p>Nen\u00ed jednozna\u010dn\u00fd n\u00e1zor na pou\u017e\u00edv\u00e1n\u00ed Uzl\u016f. Nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/azathot\/\">Nikolaj Golov<\/a><\/noindex>, kter\u00fd aktivn\u011b prosazuje pou\u017e\u00edv\u00e1n\u00ed Kotvov\u00e9 modelu v Rusku, se domn\u00edv\u00e1 (ne bezd\u016fvodn\u011b), \u017ee pro \u017e\u00e1dn\u00fd slovn\u00edk nelze p\u0159esn\u011b tvrdit, \u017ee bude <b>v\u017edy<\/b> statick\u00fd a jednovrstevn\u00fd, proto pro v\u0161echny objekty je lep\u0161\u00ed ihned pou\u017e\u00edt plnohodnotnou Kotvu.<\/p>\n<p>Dal\u0161\u00ed d\u016fle\u017eit\u00e9 rozli\u0161en\u00ed mezi Data Vault a Kotvov\u00fdm modelem spo\u010d\u00edv\u00e1 v p\u0159\u00edtomnosti <b>atribut\u016f u vztah\u016f<\/b>:<\/p>\n<p>V <b>Data Vault<\/b> Vztahy jsou takt\u00e9\u017e plnohodnotn\u00fdmi objekty jako Haby a mohou m\u00edt <b>vlastn\u00ed atributy<\/b>. V <b>J\u00e1drov\u00fd model<\/b> Vztahy se pou\u017e\u00edvaj\u00ed pouze ke spojen\u00ed Kotvy a <b>vlastn\u00ed atributy m\u00edt nemohou<\/b>. Toto rozli\u0161en\u00ed d\u00e1v\u00e1 podstatn\u011b odli\u0161n\u00e9 p\u0159\u00edstupy k modelov\u00e1n\u00ed <b>fakt\u016f<\/b>, o \u010dem\u017e bude \u0159e\u010d d\u00e1le.<\/p>\n<h3>Ulo\u017een\u00ed fakt\u016f<\/h3>\n<p>\nDo t\u00e9to doby jsme hovo\u0159ili p\u0159ev\u00e1\u017en\u011b o modelov\u00e1n\u00ed rozm\u011br\u016f. S fakty to je o n\u011bco m\u00e9n\u011b jednozna\u010dn\u00e9.<\/p>\n<p>V <b>Data Vault<\/b> typick\u00fd objekt pro uchov\u00e1v\u00e1n\u00ed fakt\u016f \u2014<b> Vztah (Link)<\/b>, v Satelitech kter\u00e9ho se shroma\u017e\u010fuj\u00ed re\u00e1ln\u00e9 ukazatele.<\/p>\n<p>Tento p\u0159\u00edstup vypad\u00e1 intuitivn\u011b srozumiteln\u011b. Poskytuje snadn\u00fd p\u0159\u00edstup k analyzovan\u00fdm ukazatel\u016fm a celkov\u011b se podob\u00e1 tradi\u010dn\u00ed tabulce fakt\u016f (pouze ukazatele nejsou ulo\u017eeny v samotn\u00e9 tabulce, ale v \"sousedn\u00ed\"). Ale existuj\u00ed i skryt\u00e9 \u00faskal\u00ed: jedna z typick\u00fdch \u00faprav modelu \u2014 roz\u0161\u00ed\u0159en\u00ed kl\u00ed\u010de faktu \u2014 vy\u017eaduje <b>p\u0159id\u00e1n\u00ed nov\u00e9ho ciz\u00edho kl\u00ed\u010de do Link<\/b>. A to zase \"naru\u0161uje\" modularitu a potenci\u00e1ln\u011b vy\u017eaduje \u00fapravy jin\u00fdch objekt\u016f.<\/p>\n<p>V <b>J\u00e1drov\u00fd model<\/b> Vztah nem\u016f\u017ee m\u00edt vlastn\u00ed atributy, proto takov\u00fd p\u0159\u00edstup neprojde \u2014 v\u0161echny atributy a ukazatele mus\u00ed m\u00edt vazbu na jeden konkr\u00e9tn\u00ed kotvu. Z toho vypl\u00fdv\u00e1 jednoduch\u00fd z\u00e1v\u011br \u2014 <b>pro ka\u017ed\u00fd fakt je tak\u00e9 pot\u0159eba sv\u016fj vlastn\u00ed kotvu.<\/b>. Pro \u010d\u00e1st toho, co jsme zvykl\u00ed pova\u017eovat za fakta, to m\u016f\u017ee vypadat p\u0159irozen\u011b \u2014 nap\u0159\u00edklad fakt n\u00e1kupu se kr\u00e1sn\u011b ztoto\u017e\u0148uje s objektem \u201eobjedn\u00e1vka\u201c nebo \u201e\u00fa\u010dtenka\u201c, n\u00e1v\u0161t\u011bva webu \u2014 se sezen\u00edm, atd. Ale objevuj\u00ed se i fakta, pro kter\u00e1 nen\u00ed tak snadn\u00e9 naj\u00edt p\u0159irozen\u00fd \u201eobjekt, nosi\u010d\u201c \u2014 nap\u0159\u00edklad zbytkov\u00e9 zbo\u017e\u00ed na skladech na za\u010d\u00e1tku ka\u017ed\u00e9ho dne. <\/p>\n<p>Odpov\u00eddaj\u00edc\u00edm zp\u016fsobem se p\u0159i roz\u0161i\u0159ov\u00e1n\u00ed kl\u00ed\u010de faktu v Anchor modelu nevyskytuj\u00ed probl\u00e9my s modularitou (sta\u010d\u00ed jednodu\u0161e p\u0159idat novou vazbu k odpov\u00eddaj\u00edc\u00edmu kotv\u011b), ale navrhov\u00e1n\u00ed modelu pro zobrazen\u00ed fakt\u016f je m\u00e9n\u011b jednozna\u010dn\u00e9 a mohou se objevovat \u201eum\u011bl\u00e9\u201c kotvy, kter\u00e9 nevhodn\u011b reprezentuj\u00ed objektov\u00fd model podnik\u00e1n\u00ed.<\/p>\n<h3>Jak se dosahuje flexibility<\/h3>\n<p>\nV\u00fdsledn\u00e1 konstrukce v obou p\u0159\u00edpadech obsahuje <b>v\u00fdznamn\u011b v\u00edce tabulek<\/b>, ne\u017e tradi\u010dn\u00ed m\u011b\u0159en\u00ed. Ale m\u016f\u017ee zab\u00edrat <b>v\u00fdznamn\u011b m\u00e9n\u011b diskov\u00e9ho prostoru<\/b> p\u0159i stejn\u00e9m souboru verzi atribut\u016f jako tradi\u010dn\u00ed m\u011b\u0159en\u00ed. \u017d\u00e1dn\u00e1 magie tu samoz\u0159ejm\u011b nen\u00ed \u2014 v\u0161e tkv\u00ed v normalizaci. Rozd\u011blen\u00edm atribut\u016f do Satelit\u016f (ve Data Vault) nebo do samostatn\u00fdch tabulek (Anchor Model) sni\u017eujeme (nebo \u00fapln\u011b vylu\u010dujeme) <b>duplicitn\u00ed hodnoty n\u011bkter\u00fdch atribut\u016f p\u0159i zm\u011bn\u011b jin\u00fdch<\/b>.<\/p>\n<p>Pro <b>Data Vault<\/b> zisk bude z\u00e1viset na rozlo\u017een\u00ed atribut\u016f do Satelit\u016f, a pro <b>J\u00e1drov\u00fd model<\/b> \u2014 prakticky p\u0159\u00edmo \u00fam\u011brn\u00fd pr\u016fm\u011brn\u00e9mu po\u010dtu verz\u00ed na objekt m\u011b\u0159en\u00ed.<\/p>\n<p>Nicm\u00e9n\u011b zisk z obsazen\u00ed prostoru \u2014 d\u016fle\u017eit\u00e1, ale ne hlavn\u00ed v\u00fdhoda odd\u011blen\u00e9ho ukl\u00e1d\u00e1n\u00ed atribut\u016f. Spolu s odd\u011blen\u00fdm ulo\u017een\u00edm vazeb d\u011bl\u00e1 tento p\u0159\u00edstup \u00falo\u017ei\u0161t\u011b <b>modul\u00e1rn\u00ed konstrukc\u00ed<\/b>. To znamen\u00e1, \u017ee p\u0159id\u00e1n\u00ed jak jednotliv\u00fdch atribut\u016f, tak cel\u00fdch nov\u00fdch subjektov\u00fdch oblast\u00ed v takov\u00e9m modelu vypad\u00e1 jako <b>nadzvednut\u00ed<\/b> nad existuj\u00edc\u00edm souborem objekt\u016f bez jejich zm\u011bny. A to je p\u0159esn\u011b to, co d\u011bl\u00e1 popsan\u00e9 metodiky flexibiln\u00edmi.<\/p>\n<p>Takt\u00e9\u017e to p\u0159ipom\u00edn\u00e1 p\u0159echod od kusov\u00e9 v\u00fdroby k s\u00e9riov\u00e9 \u2014 pokud v tradi\u010dn\u00edm p\u0159\u00edstupu ka\u017ed\u00e1 tabulka modelu je jedine\u010dn\u00e1 a vy\u017eaduje zvl\u00e1\u0161tn\u00ed pozornost, pak v flexibiln\u00edch metodik\u00e1ch \u2014 to u\u017e je soubor standardn\u00edch \u201ed\u00edl\u016f\u201c. Na jedn\u00e9 stran\u011b se po\u010det tabulek zvy\u0161uje, procesy na\u010d\u00edt\u00e1n\u00ed a v\u00fdb\u011bru dat se mus\u00ed zd\u00e1t slo\u017eit\u011bj\u0161\u00ed. Na druh\u00e9 stran\u011b se st\u00e1vaj\u00ed <b>standardizovan\u00fdmi<\/b>. A to znamen\u00e1, \u017ee mohou b\u00fdt <b>automatizov\u00e1ny a spravov\u00e1ny metadatami<\/b>. Ot\u00e1zka \u201ejak budeme ukl\u00e1dat?\u201c, na kterou mohla odpov\u011b\u010f zabrat podstatnou \u010d\u00e1st pr\u00e1ce na projektov\u00e1n\u00ed \u00faprav, nyn\u00ed prost\u011b nestoj\u00ed (stejn\u011b jako ot\u00e1zka o vlivu zm\u011bny modelu na pracovn\u00ed procesy). <\/p>\n<p>To neznamen\u00e1, \u017ee analytici v takov\u00e9m syst\u00e9mu v\u016fbec nejsou pot\u0159eba \u2014 n\u011bkdo st\u00e1le mus\u00ed zpracovat sadu objekt\u016f s atributy a zjistit odkud a jak to v\u0161e na\u010d\u00edtat. Ale objem pr\u00e1ce, stejn\u011b jako pravd\u011bpodobnost a cena chyby se podstatn\u011b sni\u017euj\u00ed. Jak v anal\u00fdze, tak p\u0159i v\u00fdvoji ETL, kter\u00fd se v podstatn\u00e9 \u010d\u00e1sti m\u016f\u017ee scvrknout na editaci metadat. <\/p>\n<h3>Temn\u00e1 str\u00e1nka<\/h3>\n<p>\nV\u0161e v\u00fd\u0161e popsan\u00e9 d\u011bl\u00e1 oba p\u0159\u00edstupy skute\u010dn\u011b flexibiln\u00ed, technologick\u00e9 a vhodn\u00e9 pro iterativn\u00ed \u00fapravy. Samoz\u0159ejm\u011b existuje i \u201ebarel dehtu\u201c, o kter\u00e9m, mysl\u00edm, u\u017e tu\u0161\u00edte.<\/p>\n<p>Dekonstrukce dat, le\u017e\u00edc\u00ed v z\u00e1klad\u011b modul\u00e1rnosti flexibiln\u00edch architektur, vede ke zv\u00fd\u0161en\u00ed po\u010dtu tabulek a t\u00edm p\u00e1dem <b>n\u00e1klad\u016f<\/b> na spojen\u00ed p\u0159i v\u00fdb\u011bru. K tomu, abyste jednodu\u0161e z\u00edskali v\u0161echny atributy m\u011b\u0159en\u00ed, v klasick\u00e9m datov\u00e9m skladu sta\u010d\u00ed jeden SELECT, zat\u00edmco flexibiln\u00ed architektura bude vy\u017eadovat celou \u0159adu JOIN\u016f. A pokud pro reporty je mo\u017en\u00e9 v\u0161echny tyto JOINy napsat p\u0159edem, analytici, zvykl\u00ed ps\u00e1t SQL ru\u010dn\u011b, budou trp\u011bt dvakr\u00e1t.<\/p>\n<p>Existuje n\u011bkolik fakt\u016f, kter\u00e9 usnad\u0148uj\u00ed takovou situaci:<\/p>\n<p><b>P\u0159i pr\u00e1ci s velk\u00fdmi m\u011b\u0159en\u00edmi se t\u00e9m\u011b\u0159 nikdy nepou\u017e\u00edvaj\u00ed sou\u010dasn\u011b v\u0161echny jeho atributy.<\/b> To znamen\u00e1, \u017ee m\u016f\u017ee b\u00fdt m\u00e9n\u011b JOIN\u016f, ne\u017e se na prvn\u00ed pohled zd\u00e1 z modelu. V Data Vault lze tak\u00e9 zohlednit p\u0159edpokl\u00e1danou frekvenci spole\u010dn\u00e9ho pou\u017e\u00edv\u00e1n\u00ed p\u0159i rozd\u011blov\u00e1n\u00ed atribut\u016f do satelit\u016f. P\u0159itom samotn\u00e9 Huby nebo Kotvy jsou pot\u0159ebn\u00e9 p\u0159edev\u0161\u00edm pro generov\u00e1n\u00ed a mapov\u00e1n\u00ed surrogate na etap\u011b na\u010d\u00edt\u00e1n\u00ed a z\u0159\u00eddka se pou\u017e\u00edvaj\u00ed v dotazech (to se obzvl\u00e1\u0161\u0165 t\u00fdk\u00e1 Kotvy).<\/p>\n<p><b>V\u0161echny JOINy \u2014 podle kl\u00ed\u010de.<\/b> Krom\u011b toho, kompaktn\u011bj\u0161\u00ed zp\u016fsob ukl\u00e1d\u00e1n\u00ed dat sni\u017euje re\u017eijn\u00ed n\u00e1klady na skenov\u00e1n\u00ed tabulek tam, kde je to pot\u0159eba (nap\u0159\u00edklad p\u0159i filtrov\u00e1n\u00ed podle hodnoty atributu). To m\u016f\u017ee v\u00e9st k tomu, \u017ee v\u00fdb\u011br z normalizovan\u00e9 datab\u00e1ze s mnoha JOINy bude dokonce rychlej\u0161\u00ed ne\u017e skenov\u00e1n\u00ed jedn\u00e9 t\u011b\u017ek\u00e9 dimenze s velk\u00fdm po\u010dtem verz\u00ed na \u0159\u00e1dek.<\/p>\n<p>Nap\u0159\u00edklad v <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Anchor-Modeling.pdf\">tato <\/a><\/noindex> \u010dl\u00e1nku je podrobn\u00fd srovn\u00e1vac\u00ed test v\u00fdkonu Anchor Modelu s v\u00fdb\u011brem z jedn\u00e9 tabulky.<\/p>\n<p><b>Mnoho z\u00e1vis\u00ed na enginu.<\/b> Mnoho modern\u00edch platforem m\u00e1 intern\u00ed mechanismy optimalizace JOIN\u016f. Nap\u0159\u00edklad MS SQL a Oracle um\u011bj\u00ed \"p\u0159esko\u010dit\" JOINy na tabulky, pokud jejich data nejsou nikde vyu\u017e\u00edv\u00e1na, krom\u011b jin\u00fdch JOIN\u016f a neovliv\u0148uj\u00ed fin\u00e1ln\u00ed v\u00fdb\u011br (eliminace tabulky\/JOINu), zat\u00edmco MPP Vertica podle <noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/wp-content\/uploads\/2011\/05\/Big_Data_Normalization.pdf\">zku\u0161enost\u00ed koleg\u016f z Avito<\/a><\/noindex>, se uk\u00e1zala jako skv\u011bl\u00fd engine pro Anchor Model s ohledem na ur\u010ditou manu\u00e1ln\u00ed optimalizaci pl\u00e1nu dotazu. Na druhou stranu, uchov\u00e1vat Anchor Model nap\u0159\u00edklad na Click House, kter\u00fd m\u00e1 omezenou podporu JOINu, se zat\u00edm nejev\u00ed jako nejlep\u0161\u00ed n\u00e1pad.<\/p>\n<p>Krom\u011b toho, pro ob\u011b architektury existuj\u00ed <b>speci\u00e1ln\u00ed techniky<\/b>, kter\u00e9 usnad\u0148uj\u00ed p\u0159\u00edstup k dat\u016fm (jak z pohledu v\u00fdkonu dotaz\u016f, tak pro koncov\u00e9 u\u017eivatele). Nap\u0159\u00edklad, <b>Point-In-Time tabulky<\/b> v Data Vault nebo <b>speci\u00e1ln\u00ed tabulkov\u00e9 funkce<\/b> v Anchor Modelu.<\/p>\n<h2>Celkem<\/h2>\n<p>\nHlavn\u00ed podstata diskutovan\u00fdch flexibiln\u00edch architektur spo\u010d\u00edv\u00e1 v modularit\u011b jejich \"konstrukce\". <\/p>\n<p>Jedn\u00e1 se o vlastnost, kter\u00e1 umo\u017e\u0148uje:<\/p>\n<ul>\n<li>Po ur\u010dit\u00e9m po\u010d\u00e1te\u010dn\u00edm nastaven\u00ed, spojen\u00e9m s nasazen\u00edm metadat a psan\u00edm z\u00e1kladn\u00edch ETL algoritm\u016f, <b>rychle poskytnout z\u00e1kazn\u00edkovi prvn\u00ed v\u00fdsledek<\/b> ve form\u011b n\u011bkolika report\u016f, obsahuj\u00edc\u00edch data pouze n\u011bkolika zdrojov\u00fdch objekt\u016f. Nen\u00ed nutn\u00e9 pln\u011b prom\u00fd\u0161let (ani na vysok\u00e9 \u00farovni) celou objektovou model pro to.<\/li>\n<li>Datov\u00fd model m\u016f\u017ee za\u010d\u00edt fungovat (a p\u0159in\u00e1\u0161et u\u017eitek) s pouh\u00fdmi 2-3 objekty a pot\u00e9 <b>postupn\u011b nar\u016fstat<\/b> (co se t\u00fd\u010de Anchor Modelu, Nikolaj <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">aplikoval <\/a><\/noindex>hezky p\u0159irovn\u00e1n\u00ed k houbov\u00e9mu myceliu).<\/li>\n<li>V\u011bt\u0161ina \u00faprav, v\u010detn\u011b roz\u0161\u00ed\u0159en\u00ed p\u0159edm\u011btu a p\u0159id\u00e1n\u00ed nov\u00fdch zdroj\u016f <b>se nedot\u00fdk\u00e1 st\u00e1vaj\u00edc\u00edho funkcionality a neohro\u017euje rozbit\u00ed n\u011b\u010deho, co ji\u017e funguje.<\/b>.<\/li>\n<li>D\u00edky dekompozici na standardn\u00ed prvky vypadaj\u00ed ETL procesy v t\u011bchto syst\u00e9mech jednotn\u011b, jejich psan\u00ed se d\u00e1 algoritmizovat a v kone\u010dn\u00e9m d\u016fsledku <b>automatizovat<\/b>.<\/li>\n<\/ul>\n<p>\nCena t\u00e9to flexibility spo\u010d\u00edv\u00e1 v <b>v\u00fdkonu<\/b>. To neznamen\u00e1, \u017ee dosa\u017een\u00ed p\u0159ijateln\u00fdch v\u00fdkonov\u00fdch metrik na takov\u00fdch modelech je nemo\u017en\u00e9. \u010casto v\u00e1m m\u016f\u017ee sta\u010dit pouze v\u00edce \u00fasil\u00ed a pozornosti k detail\u016fm pro dosa\u017een\u00ed po\u017eadovan\u00fdch metrik.<\/p>\n<h2>Aplikace<\/h2>\n<p><\/p>\n<h4>Typy entit <b>Data Vault<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/6bbaee505587152d7e5c11b2889bf25a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00edce o Data Vault:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/danlinstedt.com\/\">Web Dena Listedta<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.dwh-club.com\/ru\/dwh-bi-articles\/vse-o-data-vault.html\">V\u0161e o Data Vault v ru\u0161tin\u011b<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348188\/\">O Data Vault na Habru<\/a><\/noindex><\/p>\n<h4>Typy entit <b>Anchor Model<\/b><\/h4>\n<p>\n<img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/d518f01e6a5c241e9e73d1ea0210c557.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00edce o Anchor Model:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/www.anchormodeling.com\/\">Web tv\u016frc\u016f Anchor Model<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/322510\/\">\u010cl\u00e1nek o zku\u0161enostech s implementac\u00ed Anchor Model v Avitu<\/a><\/noindex><\/p>\n<p>Shrnut\u00ed s b\u011b\u017en\u00fdmi rysy a rozd\u00edly uveden\u00fdch p\u0159\u00edstup\u016f:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH\" src=\"\/wp-content\/uploads\/2020\/08\/807717245fd874ab141031fc64e584fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/glowbyte\/blog\/515940\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435. \u041c\u043d\u043e\u0433\u043e\u0435 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0430\u0437\u044b \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435. \u041e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u0431\u044b\u043b\u0438 \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u201c\u0437\u0432\u0435\u0437\u0434\u0430\u201d \u0441 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443: \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 3NF, \u0432\u0438\u0442\u0440\u0438\u043d\u044b \u2014 \u0437\u0432\u0435\u0437\u0434\u0430. \u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92016,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92015","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u0433\u0438\u0431\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DWH | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-21T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-21T17:42:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47P\u0159ehled flexibiln\u00edch metodologi\u00ed n\u00e1vrhu DWH | ProHoster","description":"V\u00fdvoj \u00falo\u017ei\u0161t\u011b je dlouh\u00fd a v\u00e1\u017en\u00fd proces.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u0433\u0438\u0431\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DWH | ProHoster","og:description":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u2014 \u0434\u0435\u043b\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u0435.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-gibkih-metodologij-proektirovaniya-dwh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-21T17:42:13+00:00","article:modified_time":"2020-08-21T17:42:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92015","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:16:44","updated":"2022-09-27 14:57:59","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/92015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=92015"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/92015\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/92016"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=92015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=92015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=92015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}