Andmetehoidla arendamine on pikk ja tÔsine protsess.
Paljuski sÔltub projekti edust sellest, kui hÀsti on alguses lÀbi mÔeldud objekti mudel ja andmebaasi struktuur.
TavapĂ€rane lĂ€henemine on erinevad variatsioonid âtĂ€rniâ skeemi ja kolmanda normaali vormi (3NF) kombinatsioonist. Ăldiselt kehtib pĂ”himĂ”te: algandmed â 3NF, vitriinid â tĂ€rn. See lĂ€henemine, mis on aja jooksul tĂ”estatud ja suure hulga uuringutega toetatud, on esimene (ja mĂ”nikord isegi ainus) mĂ”te, mis tuleb kogenud DWH spetsialisti pĂ€he, kui mĂ”elda, kuidas analĂŒĂŒtiline andmehoidla peaks vĂ€lja nĂ€gema.
Teisest kĂŒljest on Ă€ri ja kliendi nĂ”udmised tuntud kiire muutuja, samas kui andmed kasvavad nii âsĂŒgavaleâ kui ka âlaiuseleâ. Ja siin ilmneb tĂ€rni peamine puudus â piiratud paindlikkus.
Ja kui teie vaikuses ja mugavuses elus DWH arendajana Àkki:
- tekib ĂŒlesanne âteha kiiresti midagi, ja siis vaatameâ;
- ilmub kiiresti arenev projekt, kus uute allikate lisamine ja Ă€rimudeli ĂŒmberkujundamine toimub vĂ€hemalt kord nĂ€dalas;
- on tellija, kes ei sea selgelt, kuidas sĂŒsteem peaks vĂ€lja nĂ€gema ja milliseid funktsioone tĂ€itma, kuid on eksperimenteerimise ja jĂ€rkjĂ€rgulise tulemuse tĂ€psustamisega nĂ”us, samas kui lĂ€henemine on samuti jĂ€rkjĂ€rguline;
- tutvustas projektijuht rÔÔmsa uudisega: âNĂŒĂŒd on meil agiilne mudel!â.
VĂ”i kui teil on lihtsalt huvi, kuidas veel andmehoidlaid ĂŒles ehitada â olete teretulnud lugema edasi!

Mis tĂ€hendab âpaindlikkusâ
Kuna me alustasime, siis mÀÀratleme, milliseid omadusi peaks sĂŒsteem omama, et seda saaks nimetada âpaindlikuksâ.
Tasub mainida, et kirjeldatud omadused peaksid puudutama just sĂŒsteemi, mitte protsessi selle arendamisel. Seega, kui soovisite lugeda Agile metodoloogiast, on parem tutvuda teiste artiklitega. NĂ€iteks on Hubris palju huvitavaid materjale (nagu ja , kui ka ).
See ei tĂ€henda, et arendusprotsess ja DWH struktuur ei oleks omavahel seotud. Ăldiselt peaks Agile'i jĂ€rgi arendamine paindliku arhitektuuri hoidlast olema oluliselt lihtsam. Praktikas esinevad aga sagedamini juhul, kui arendatakse traditsioonilist DWH-d Kimballi vĂ”i DataVaulti jĂ€rgi â vedajatena, pigem kui ilmsed juhuslikud kokkulangevused paindlikkuse kahe ilmingu vahel ĂŒhel projektis.
Nii, millised vÔimalused peaks paindlik hoidla omama? Siin vÔib vÀlja tuua kolm punkti:
- Varajane tarnimine ja kiire tĂ€iendamine â see tĂ€hendab, et ideaaljuhul peaks esimene Ă€riline tulemus (nĂ€iteks esimesed töötavad aruanded) olema saadud vĂ”imalikult varakult, st juba enne, kui sĂŒsteemi tervikprojekti on tĂ€ielikult kavandatud ja rakendatud. Samuti peaks iga jĂ€rgmine tĂ€iendamine nĂ”udma vĂ”imalikult vĂ€he aega.
- Iteratiivne tĂ€iendamine â see tĂ€hendab, et iga jĂ€rgmine tĂ€iendus ei tohiks ideaalis puudutada juba töötavat funktsionaalsust. Just see aspekt on sageli suurim Ă”udusunenĂ€gu suurtes projektides â varem vĂ”i hiljem hakkavad eraldi objektid olema nii paljude suhetega seotud, et on lihtsam kogu loogika kopeerida kĂ”rvalt, kui lisada vĂ€li olemasolevasse tabelisse. Ja kui teid ĂŒllatab, et muudatuste mĂ”ju olemasolevatele objektidele analĂŒĂŒsimine vĂ”ib vĂ”tta rohkem aega kui tĂ€iendamine ise â siis olete tĂ”enĂ€oliselt veel suurte DWH-idega panganduses vĂ”i telekommunikatsioonis töötanud.
- Pidev kohandumine muutuvaid Ă€rinĂ”udeid â ĂŒldine objekti struktuur peaks olema kavandatud mitte lihtsalt vĂ”imaliku laiendamise arvesse vĂ”tmisega, vaid nii, et selle laiendamise suunda ei oleks isegi unistades kujuteldav projekti kavandamise etapil.
Ja jah, nendele kĂ”igile nĂ”uetele vastamine ĂŒhesĂŒsteemis on vĂ”imalik (muidugi teatud juhtudel ja teatud tingimustega).
Allpool kĂ€sitlen kahte populaarseimat paindliku projekteerimise metoodikat DWH-de jaoks â Anchor model ja Data Vault. Kaaludelt jÀÀvad vĂ€lja sellised suurepĂ€rased tehnikad nagu nĂ€iteks EAV, 6NF (puhtal kujul) ja kĂ”ik, mis on seotud NoSQL lahendustega â mitte sellepĂ€rast, et need oleksid millegagi halvemad, ja isegi mitte sellepĂ€rast, et sel juhul Ă€hvardaks artikkel omada keskmise teadusliku töö mahtu. Lihtsalt kĂ”ik see kuulub veidi teistsuguste klasside lahendustele â kas tehnikatele, mida saate rakendada konkreetsetes olukordades, sĂ”ltumata teie projekti ĂŒldisest arhitektuurist (nagu EAV), vĂ”i hoopis globaalsetele informatsiooni salvestamise paradigmadele (nagu nĂ€iteks graafandmebaasid ja teised NoSQL valikud).
Klassikalise lÀhenemise probleemid ja nende lahendused paindlikes metodoloogiates
Klassikalise lÀhenemise all mÔistan vana head tÀhtrauda (ilma et arvesse vÔtta aluseks olevate kihtide konkreetseid teostusi, palun andestage mulle Kimballi, Inmoni ja CDM apostlid).
1. Tugev karistuse mÀÀratlus seoste vahel
Selle mudeli aluseks on andmete selge jaotus mÔÔtmed (Dimension) ja faktid (Fact). Ja see, kurat vĂ”taks, on loogiline â analĂŒĂŒs andmetesse enamikus juhtudel vĂ€hendab end konkreetsete arvuliste nĂ€itajate (faktide) analĂŒĂŒsiks teatud lĂ”igetes (mÔÔtmetes).
Samas mÀÀratakse objektide vahelised seosed tabelite vaheliste vĂ€lisvĂ”tmete kaudu. See tundub tĂ€iesti loomulik, kuid toob koheselt kaasa esimese paindlikkuse piirmÀÀra â tugeva seoste karistuse mÀÀratlemise.
See tĂ€hendab, et tabelite projekteerimise etapis peate tĂ€pselt mÀÀratlema, kas iga seotud objektide paarid saavad olema mitmed-ĂŒhele, vĂ”i ainult 1-ĂŒhele, ja âkuhu suunasâ. Sellest sĂ”ltub otse, millises tabelis on peamine vĂ”ti ja millises â vĂ€line. Nende suhete muutmine uute nĂ”udmiste korral toob tĂ”enĂ€oliselt kaasa andmebaasi ĂŒmbertegemise.
NĂ€iteks, projekteerides objekti âkassakviitungâ tuginedes mĂŒĂŒgiosakonna tĂ”otustele, olite sĂ€testanud ĂŒhe kampaania mĂ”ju mitmele kviitungipositsioonile (aga mitte vastupidi): Ja mĂ”ne aja pĂ€rast tutvustasid kolleegid uut turundusstrateegiat, kus ĂŒhele ja samale positsioonile vĂ”ivad kehtida

mitmed kampaaniad samal ajal. NĂŒĂŒd peate tabelid kohandama, tuues seose eraldi objekti.. Ja nĂŒĂŒd peate te töötlema tabeleid, tuues seose eraldi objektina esile.
(KĂ”ik tuletatud objektid, milles toimub promo kontroll, vajavad nĂŒĂŒd samuti tĂ€iustamist).

Seosed Data Vaultis ja Anchor Mudelis
Sarnase olukorra vĂ€ltimine osutus ĂŒsna lihtsaks: ei tasu mĂŒĂŒgiosakonna usaldada, selleks piisab kĂ”iki seoseid algselt eraldi tabelites hoidma ja töödelda neid kui paljusid-kui-paljusid.
Selline lÀhenemine pakuti vÀlja Dan Linstedti poolt osana paradigmist Data Vault ja seda toetas tÀielikult Lars RönnbÀck ja Anchor Mudel.
KokkuvÔttes saame esimest silmapaistvat tunnust paindlikest metoodikatest:
Seosed objektide vahel ei ole salvestatud vanemate entiteetide atribuutesse, vaid kujutavad endast eraldi tĂŒĂŒpi objekte.
Uues Data Vault Selliseid seostetabeleid nimetatakse Linktoob kaasa selle, et "saadetamise" hetkel server ei ole veel kĂ€ivitatud ja kĂ”ik lĂ€heb katki. Anchor Mudel â Tie. Esmapilgul sarnanevad nad vĂ€ga, kuigi nende erinevusi ei piirdu ainult nimetusega (millest rÀÀgitakse allpool). MĂ”lemas arhitektuuris saavad seostetabelid siduda mille igasuguseid entiteete (mitte tingimata 2).
See esmapilgul liialdatud lĂ€henemine pakub olulist paindlikkust tĂ€iustuste tegemisel. Selline struktuur muutub toleranteerivaks mitte ainult olemasolevate seoste kardinaalsuse muutumise suhtes, vaid ka uute lisamise suhtes â kui nĂŒĂŒd kassapunkti kĂŒlge tuleb lisaviidatud kassapidajale, siis sellise sideme loomine on lihtsalt lisand, mis ei mĂ”juta mingeid olemasolevaid objekte ja protsesse.

2. Andmete dubleerimine
Teine probleem, mida paindlikud arhitektuurid lahendavad, on vĂ€hem ilmne ja iseloomulik enamasti SCD2 tĂŒĂŒpi mÔÔtmistele (aeglaselt muutuvale mÔÔtmisele teist tĂŒĂŒpi), kuigi mitte ainult neile.
Klassikalisel andmehoidlas mÔÔtmine esindab tavaliselt tabelit, mis sisaldab asenduskoodi (PK-na) ning komplekti Àrikoodidest ja atribuute eraldi veergudel.

Kui mÔÔtmine toetab versioonitust, siis lisatakse standardsetele valdkondadele versioonide kehtivuse ajapiirid, ja ĂŒhe rea kohta allikas on andmehoidlas mitu versiooni (igaĂŒhe versiooniredaktide nihutamise jaoks).
Kui mÔÔtmetel on vĂ€hemalt ĂŒks sagedasti muutuva versiooniga atribuut, siis selliste mÔÔtmete versioonide arv on muljetavaldav (isegi kui ĂŒlejÀÀnud atribuudid ei ole versioonilised vĂ”i ei muutu kunagi), ja kui neid atribuute on mitu, vĂ”ib versioonide arv geomeetriliselt kasvada. Selline mÔÔde vĂ”ib hĂ”ivata mĂ€rkimisvÀÀrse osa kettaruumi, kuigi enamik seal hoitavatest andmetest on lihtsalt fikseeritud atribuutide vÀÀrtuste dubleerimine teistest ridadest.

Sagedasti rakendatakse ka denormaliseerimist â osa atribuudidest hoitakse eesmĂ€rgiga salvestada neid vÀÀrtustena, mitte viidena loendisse vĂ”i muusse mÔÔtmesse. Selline lĂ€henemine kiirendab juurdepÀÀsu andmetele, vĂ€hendades ĂŒhildamiste arvu, kui pöörduda mÔÔtme poole.
Tavaliselt viib see olukorrani, et samad andmed on samal ajal salvestatud mitmes kohas. NĂ€iteks vĂ”ib elukoha ja kliendi kategooria kuuluvuse teave korraga eksisteerida mÔÔtmetes âKlientâ ja faktides âOstâ, âKohaletoimetamineâ ja âKlienditeenindusse pöördumisedâ, samuti seotud tabelis âKlient â Kliendihaldurâ.
Ăldiselt ka kirjeldatud asjaolud kehtivad ka tavapĂ€raste (mitte versiooniliste) mÔÔtmete kohta, kuid versiooniliste puhul vĂ”ivad need omada erinevat ulatust: uue objekti versiooni ilmumine (eriti tagantjĂ€rele) ei tĂ€henda ainult kĂ”igi seotud tabelite vĂ€rskendamist, vaid ka seotud objektide uusversioonide paiskumist â kui Tabel 1 kasutatakse Tabeli 2 koostamiseks, siis Tabel 2 Tabeli 3 koostamiseks jne. Isegi kui Tabeli 1 ei osale Tabeli 3 koostamises (ja osalevad Tabeli 2 teised atribuudid, mis on saadud muudest allikatest), toob selle struktuuri versioonivĂ€rskendus vĂ€hemalt kaasa tĂ€iendavad kulud ja maksimaalselt â liigseid versioone Tabelis 3, mis ei ole siin ĂŒldse âasjakohaneâ ja edasi ahelas.

3. Mitte-lineaarne keerukus tÀiustamisel
Samaaegselt iga uus vitriin, mis koostatakse teise alusel, suurendab kohtade arvu, kus andmed vĂ”ivad ETL muudatuste tegemisel âlahku minnaâ. See omakorda toob kaasa igasuguste uute tĂ€iustuste keerukuse (ja kestuse) kasvu.
Kui eelnevalt kirjeldatu kehtib sĂŒsteemide kohta, kus ETL-protsessid harva arenevad, saab sellises paradigmas elada â piisab lihtsalt jĂ€lgimisest, et uued arendused oleksid Ă”igesti kantud kĂ”ikidesse seotud objektidesse. Kui aga arendused toimuvad sageli, suureneb oluliselt tĂ”enĂ€osus, et mĂ”ni seos jÀÀb kogemata kahe silma vahele.
Kui lisaks arvestada, et âversioonigaâ ETL on oluliselt keerulisem kui âilma versioonitaâ, siis muutub selle kĂ”ikse haldamine piisavalt keeruliseks, et vigu vĂ€ltida.
Objektide ja atribuutide salvestamine Data Vaultis ja Anchor mudelis
Autorite pakutud lÀhenemist elastsete arhitektuuride valdkonnas saab sÔnastada jÀrgmiselt:
On vajalik eraldada see, mis muutub, sellest, mis jÀÀb muutumatuks. TeisisÔnu, salvestada vÔtmed eraldi atribuutidest.
Sellegipoolest ei tasu segi ajada ilma versioonita atribuutit muutumatu: esimene ei salvesta oma muutumise ajalugu, kuid vĂ”ib muutuda (nĂ€iteks andmete sisestamise vea parandamisel vĂ”i uute andmete saamisel) teine â ei muutu kunagi.
Arvamused selle kohta, mida tÀpselt saab Data Vaultis ja Anchor mudelis pidada muutumatuks, erinevad.
Arhitektuuri vaatepunktist Data Vault, vĂ”ib muutumatuks pidada kogu vĂ”tmete kogumit â naturaalsed (organisatsiooni registrikood, toote kood allik sĂŒsteemis jne) ja surrogaadid. Samal ajal saab ĂŒlejÀÀnud atribuudid jagada rĂŒhmadeks allika ja / vĂ”i muutuste sageduse jĂ€rgi ning iga rĂŒhma jaoks peab olema loodud eraldi tabel iseseisva versioonide kogumiga.
Kuid Anchor Model paradigmas peetakse muutumatuks ainult surrogaadivĂ”tmeid olendi. KĂ”ik muu (sealhulgas naturaalsed vĂ”tmed) on lihtsalt tema atribuutide erijuhud. Samuti kĂ”ik atribuudid on vaikimisi ĂŒksteisest sĂ”ltumatud , seega peab iga attribuudi jaoks olema looduderaldi tabel tabelid, mis sisaldavad olendi vĂ”tmeid, nimetatakse.
Uues Data Vault Hubideks (Hub) . Hubid sisaldavad alati fikseeritud kogust vÀlju:Olendi naturaalsed vÔtmed
- SurrogaadivÔti
- Viide allikale
- Salvestamise aeg
- Kirjed Hubides
kunagi ei muutu ja ei oma versioone. ei muutu kunagi ja neil ei ole versiooneVĂ€limik lahendused sarnanevad vĂ€liselt ID-kaartide tabelitega, mida kasutatakse mĂ”nedes sĂŒsteemides surrogaatide genereerimiseks, kuid Data Vault soovitab surrogaatide jaoks kasutada mitte tĂ€isarvulist jĂ€rjestust, vaid Ă€rivĂ”tmete komplekti rĂ€si. Selline lĂ€henemine lihtsustab suhete ja atribuute allikatest laadimist (ei pea liitma hubi, et saada surrogaat, piisab vaid loendamisest, hÀƥƥides loodud vĂ”tme), kuid vĂ”ib pĂ”hjustada muid probleeme (nĂ€iteks kolĂŒĂŒside, suurte ja mitte trĂŒkitavate sĂŒmbolite tĂ”ttu stringivĂ”tmetes jne), seega ei ole see ĂŒldiselt aktsepteeritud.
KĂ”ik muud atribuudid salvestatakse erilistes tabelites, mida nimetatakse satelliitideks (Satellit). Ăhel hubil vĂ”ib olla mitu satelliiti, mis salvestavad erinevaid atribuutide komplekte.

Atribuutide jaotamine satelliitide vahel toimub pĂ”himĂ”tte jĂ€rgi koosmuutmine â ĂŒhes satelliidis vĂ”ivad olla versioonivabad atribuudid (nĂ€iteks sĂŒnnipĂ€ev ja isikukood fĂŒĂŒsilisele isikule), teises â harva muutuvad versioonilised (nĂ€iteks perekonnanimi ja passi number), kolmandas â sageli muutuvad (nĂ€iteks kohaletoimetamise aadress, kategooria, viimane tellimise kuupĂ€ev jne). Versioonilisus toimub eraldi satelliitide tasandil, mitte terviku mĂ”istes, seega on atribuudi jaotamine mĂ”istlik teha nii, et ĂŒhe satelliidi sisesed versioonide lĂ”imingud oleksid minimaalsed (mis vĂ€hendab kokkuhoitud versioonide arvu).
Samuti, andmete laadimise protsessi optimeerimiseks, kantakse eraldi satelliitidesse sageli atribuudid, mis on saadud erinevatest allikatest.
Satelliidid on seotud Hubiga lĂ€bi vĂ€lishiirde (mis vastab kardinaalsusele 1-kaduma). See tĂ€hendab, et atribuutide mitmesugust vÀÀrtust (nĂ€iteks mitmeid kontakttelefoninumbreid ĂŒhe kliendi jaoks) toetab selline arhitektuur âvaikimisiâ.
Uues Ankurmudeli (Anchor Model) tabelid, mis salvestavad vÔtmeid, nimetatakse ankurditeks (Anchor). Ja nad salvestavad:
- Ainult surrogaatvÔtmed
- Salvestamise aeg
- Kirjed Hubides
Looduslikud vÔtmed on Ankurmudeli seisukohalt tavalised atribuudid. Selline variant vÔib tunduda keerulisem mÔista, kuid see annab palju rohkem ruumi objekti identifitseerimiseks.

NĂ€iteks kui sama ĂŒksuse andmed vĂ”ivad pĂ€rineda erinevatest sĂŒsteemidest, milles kasutatakse erinevaid looduslikke vĂ”tmeid. Data Vaultis vĂ”ib see viia ĂŒsna mahukate konstruktsioonideni, kus on mitu hubi (iga allika jaoks ĂŒks + ĂŒhendav peamist versioon), samas kui Ankurmudelis satub iga allika looduslik vĂ”ti oma attribuuti ja seda saab laadimise ajal kasutada sĂ”ltumatult teistest.
Kuid siin peitub ĂŒks salakaval moment: kui ĂŒhes ĂŒksuses koondatakse atribuute erinevatest sĂŒsteemidest, siis tĂ”enĂ€oliselt eksisteerivad mĂ”ned koondamisreeglid, mille jĂ€rgi sĂŒsteem peab mĂ”istma, et erinevatest allikatest saadud rekordid vastavad ĂŒhele ja samale ĂŒksuse eksemplarile.
Uues Data Vault Need reeglid mÀÀravad tĂ”enĂ€oliselt âasendushubiâ peamise ĂŒksuse loomise ja ei mĂ”juta hube, mis salvestavad allikate looduslikke vĂ”tmeid ja nende algseid atribuute. Kui mingil hetkel koondamisreeglid muutuvad (vĂ”i tuleb uuendus atribuute, mille alusel seda tĂ€iendatakse), piisab asendushubide ĂŒmberkujundamisest.
Uues Ankurmudel selline ĂŒksus tĂ”enĂ€oliselt hoitakse ĂŒhes ainsas ankurduspunktis.See tĂ€hendab, et kĂ”ik atribuudid, sĂ”ltumata sellest, millisest allikast need on saadud, seondatakse samale asendajale. Vigu kumulatiivselt eristada ja jĂ€lgida koondamise tĂ€psust sellises sĂŒsteemis vĂ”ib osutuda oluliselt keerulisemaks, eriti kui reeglid on piisavalt keerulised ja muutuvad tihti, ning sama atribuut vĂ”ib pĂ€rineda erinevatest allikatest (kuigi see on tĂ€pselt vĂ”imalik, kuna iga atribuutversioon salvestab viite oma allikale).
Igal juhul, kui teie sĂŒsteemis on kavandatud funktsionaalsete elementide rakendamine duplikaatide eemaldamine, rekordite liitmine ja muud MDM elemendid, on eriti oluline tutvuda looduslike vĂ”tmete ladustamise aspektidega paindlikes meetodites. TĂ”enĂ€oliselt osutub Data Vaulti mahukam konstruktsioon jĂ€rsku turvalisemaks seoses sulandumise vigadega.
Ankurmudel nĂ€eb samuti ette tĂ€iendava objekti tĂŒĂŒbi, mida nimetatakse SĂ”lme (Knot) tegelikult on see eriline degenereeritud ankur, mis vĂ”ib sisaldada vaid ĂŒhte atribuuti. SĂŒsteeme on ette nĂ€htud kasutamiseks lamejuhtide hoidmiseks (nt sugu, perekonnaseis, klienditeeninduse kategooria jne). Erinevalt Ankrust, SĂŒsteem ei oma seotud atribuutide tabeleid, ja selle ainus atribuut (nimi) salvestatakse alati ĂŒhte tabelisse koos vĂ”tmega. SĂŒsteemid seondub Ankrute tabelitega (Tie) samuti nagu ankrud omavahel.
Ăksmeelt SĂŒsteemide kasutamise osas pole. NĂ€iteks, , kes aktiivselt edendab Ankurmudeli rakendamist Venemaal, usub (mitte pĂ”hjendatult), et ĂŒhele juhtimissĂŒsteemile ei saa kindlalt öelda, et see alati oleks staatiline ja ĂŒhetasandiline, seega on kĂ”igi objektide jaoks parem kohe kasutada tĂ€isvÀÀrtuslikku Ankrut.
Veel ĂŒks oluline erinevus Data Vaulti ja Ankurmudeli vahel on seoste atribuutide olemasolu:
Uues Data Vault Seosed on sama tĂ€isvÀÀrtuslikud objekid nagu Hublid ja vĂ”ivad omada oma atribuute. Failis Ankurmudel Seosed kasutatakse ainult Ankrute ĂŒhendamiseks ja oma atribuute omada ei saa. See erinevus toob kaasa oluliselt erinevad lĂ€henemised modelleerimisele faktide, millest rÀÀgitakse edasi.
Faktide salvestamine
Enne seda rÀÀkisime peamiselt mÔÔtmete modelleerimisest. Faktidega on asi veidi vĂ€hem ĂŒheselt mĂ”istetav.
Uues Data Vault tĂŒĂŒpiline objekt faktide hoidmiseks â Seos (Link), mille Sattelitesse kogunevad materiaalsed nĂ€itajad.
See lĂ€henemine tundub intuitiivselt arusaadav. See annab lihtsa ligipÀÀsu analĂŒĂŒsitavatele nĂ€itajatele ja sarnaneb ĂŒldiselt traditsioonilise faktitabeliga (ainult nĂ€itajad ei ole salvestatud otse tabelisse, vaid ânaabertabelisseâ). Kuid siin on ka peidetud probleemid: ĂŒks tĂŒĂŒpiline modelleerimise tĂ€iendamine â faktivĂ”tme laiendamine â tekitab vajaduse uue vĂ€list vĂ”tme lisamiseks Linki. See rikub omakorda moodulsust ja vĂ”ib potentsiaalselt pĂ”hjustada vajaduse teiste objektide tĂ€ienduste jĂ€rele.
Uues Ankurmudel Seos ei saa omada oma atribuute, seega ei sobi selline lĂ€henemine â absoluutselt kĂ”ik atribuudid ja nĂ€itajad peavad olema seotud ĂŒhe konkreetse ankruga. KokkuvĂ”te on lihtne â iga fakti jaoks on samuti vajalik oma ankur. Osade, mis me harjutasime pidama faktideks, vĂ”ib see tunduda loomulik â nĂ€iteks ostu fakt koondub objektile "tellimus" vĂ”i "kviitung", veebisaidi kĂŒlastus â sessioonile jne. Kuid on ka fakte, mille jaoks sellise loomuliku "objekt-kandja" leidmine ei ole nii lihtne â nĂ€iteks pĂ€evade alguses laos olevate kaupade varude jÀÀgid.
Seega ei teki faktiteema vĂ”tme laiendamisel jĂ€reldusmudelis probleeme, kuna piisab lihtsalt uue ĂŒhenduse lisamisest vastavale jĂ€reldusele, kuid mudeli kavandamine faktide kuvamiseks on vĂ€hem ĂŒheselt mĂ”istetav, vĂ”ivad tekkida "kunstlikud" jĂ€reldused, mis ei peegelda Ă€rimudeli objekti selgelt.
Kuidas saavutatakse paindlikkus
Saadud konstruktsioon mĂ”lemas juhul sisaldab oluliselt rohkem tabeleid, kui traditsiooniline mÔÔtmine. Aga vĂ”ib vĂ”tta oluliselt vĂ€hem kettaruumi sama versiooniate atribuutide kogumiga, mis on traditsiooniline mÔÔtmine. Siin pole mingit maagilist â kĂ”ik on normaalsuse kĂŒsimus. Jagades atribuudid satelliitidesse (Data Vaultis) vĂ”i eraldi tabelitesse (Anchor Model), vĂ€hendame (vĂ”i vĂ€listame tĂ€ielikult) ĂŒhtede atribuutide vÀÀrtuste dubleerimist teiste muutumisel..
Tooge Data Vault Kasum sĂ”ltub atribuutide jaotamisest satelliitidesse, ja Ankurmudel â on praktiliselt otseselt proportsionaalne mÔÔtemudeli objekti keskmise versioonide arvu jĂ€rgi.
Kuid ruumi kokkuhoid on oluline, kuid mitte peamine eelis atribuutide eraldi hoidmisel. Koos eraldi linkide hoidmisega muudab see ladustamise moodulaarseks konstruktsiooniks. See tÀhendab, et nii eraldi atribuutide kui ka tervikute uusate valdkondade lisamine sellesse mudelisse tundub nagu tÀiendamine olemasolevatele objektide kogumile ilma nende muutmiseta. Ja just see muudab kirjeldatud meetodid paindlikuks.
See meenutab ka ĂŒleminekut ĂŒksiktootmiselt masstootmisele â kui traditsioonilises lĂ€henemises on iga mudelitabel ainulaadne ja vajab eraldi tĂ€helepanu, siis paindlikes meetodites on see juba standardsete "detailide" kogum. Ăhelt poolt on tabeleid rohkem, andmete laadimise ja valimise protsessid nĂ€ivad keerulisemad. Teiselt poolt â need muutuvad standardseteks. Seega vĂ”ivad need olla automaatne ja hallata metaandmeid. KĂŒsimus âkuidas me paigutame?â, millele vastamine vĂ”iks vĂ”tta mĂ€rkimisvÀÀrse osa muudatuste projekteerimise tööst, ei ole enam oluline (nagu ka kĂŒsimus, kuidas mudeli muutmine mĂ”jutab kĂ€imasolevaid protsesse).
See ei tĂ€henda, et analĂŒĂŒtikud sellises sĂŒsteemis tĂ€ielikult tarvis ei ole â keegi peab ikkagi töötama vĂ€lja objektide kogumi atribuutidega ja selgitama vĂ€lja, kust ja kuidas kĂ”ike seda laadida. Kuid töö maht, samuti tĂ”enĂ€osus ja viga hind on oluliselt vĂ€henenud. Nii analĂŒĂŒsi etapis kui ka ETLi arendamisel, mis suuresti vĂ”ib tĂ€hendada metaandmete redigeerimist.
Tume pool
KĂ”ik eeltoodud muudab mĂ”lemad lĂ€henemised tĂ”eliselt paindlikeks, tehnoloogilisteks ja sobivateks iteratiivseks arendamiseks. Loomulikult on olemas ka âtĂ”rvatĂŒkkâ, millest arvan, et oled juba teadlik.
Andmete dekompositsioon, mis on paindlike arhitektuuride moodularhitektuuride aluseks, viib tabelite arvu suurenemiseni ja seega mugavuskulud JOIN'e puhul pĂ€ringute tegemisel. Selleks, et lihtsalt saada kĂ”ik mÔÔtmete atribuudid, piisab klassikalisest andmehoidlast ĂŒhest SELECT-ist, aga paindlik arhitektuur nĂ”uab terve reas JOIN'e. Ja kui kĂ”iki neid JOIN'e saab aruannete jaoks ette kirjutada, siis analĂŒĂŒtikud, kes on harjunud SQL-i kĂ€sitsi kirjutama, peavad kaks korda rohkem vaeva nĂ€gema.
On mitmeid fakte, mis seda olukorda lihtsustavad:
Kui töötada suurte mÔÔtmete kallal, ei kasutata peaaegu kunagi korraga kĂ”iki selle atribuudid. See tĂ€hendab, et JOIN'e vĂ”ib olla vĂ€hem, kui esmapilgul mudelit vaadates paistab. Data Vault'is saab samuti arvesse vĂ”tta eeldatavat koostöösagedust, jaotades atribuudid satelliitide vahel. Kuid ise HĂŒbriidid vĂ”i Ankurid on vajalikud peamiselt substraatide genereerimiseks ja kaardistamiseks laadimise etapis ning neid harva kasutatakse pĂ€ringutes (see puudutab eriti Ankureid).
KĂ”ik JOIN'id â vĂ”tme jĂ€rgi. Lisaks, andmete 'kompaktselt' salvestamise viis vĂ€hendab tabelite skanneerimise kulusid seal, kus see on vajalik (nĂ€iteks atribuutide jĂ€rgi filtreerimisel). See vĂ”ib viia selleni, et normaaliseeritud andmebaasi alusel, millel on hulgi liiteid, on andmete hankimine isegi kiirem kui ĂŒhe raskete mÔÔtmega, millel on palju versioone iga rea kohta.
NĂ€iteks, siin artikkel sisaldab ĂŒksikasjalikku vĂ”rdlevat testimist Ankurmudeli jĂ”udluse kohta, mis on seotud ĂŒhe tabeliga.
Palju sĂ”ltub mootorist. Paljudel kaasaegsetel platvormidel on sisemised mehanismid liidete optimeerimiseks. NĂ€iteks oskab MS SQL ja Oracle 'jĂ€ta vahele' liiteid tabelitesse, kui nende andmeid ei kasutata kuskil mujal, vĂ€lja arvatud teised liidendid, ja need ei mĂ”juta viimast valikut (tabeli/liidete eliminatsioon), samas kui MPP Vertica on , nĂ€idanud end suurepĂ€rasena Ankurmudeli jaoks, arvestades teatavat kĂ€sitsi optimeerimist pĂ€ringu plaanis. Teisest kĂŒljest, Ankurmudeli hoidmine nĂ€iteks Click House'is, millel on piiratud liidete tugi, tundub praegu mitte vĂ€ga hea idee.
Lisaks sellele on mÔlema arhitektuuri jaoks olemas erilised tehnikad, mis hÔlbustavad andmete juurde pÀÀsemist (nii pÀringute tulemuslikkuse kui ka lÔppkasutajate jaoks). NÀiteks, Point-In-Time tabelid Data Vaultis vÔi erilised tabelifunktsioonid Ankurmudelis.
KokkuvÔttes
KĂ€sitletud paindlike arhitektuuride peamine olemus seisneb nende 'konstruktsiooni' moodulsuses.
Just see omadus vÔimaldab:
- PÀrast teatavat esialgset ettevalmistust, mis on seotud metaandmete rakendamise ja pÔhiehkne ETL algoritmide kirjutamisega, anda kiiresti kliendile esialgne tulemus paarist aruandest, mis sisaldavad andmeid vaid mÔne lÀhteobjekti kohta. Selleks ei ole vajalik tÀielikult kavandada (isegi kÔrgemal tasemel) kogu objekti mudelit.
- Andmemudel vÔib alustada tööd (ja tuua kasu) vaid kahe-kolme objektiga, seejÀrel kasvama jÀrk-jÀrgult (seoses Ankurmudeliga, Nikolai ilusat vÔrdlust seeneteedega).
- Enamik tÀiendusi, sealhulgas teemaala laienemine ja uute allikate lisamine ei mÔjuta olemasolevat funktsionaalsust ja ei tekita ohtu midagi, mis juba töötab, katkestada..
- TĂ€nu standardelementide dekompositsioonile nĂ€evad ETL-protsessid sellistes sĂŒsteemides vĂ€lja ĂŒhtsed, nende kirjutamine on algoritmitav ja lĂ”puks automaatika.
Selle paindlikkuse hind on tÔhusus. See ei tÀhenda, et sellistes mudelites vastuvÔetava efektiivsuse saavutamine oleks vÔimatu. Enamasti vÔib teil lihtsalt olla vaja rohkem pingutust ja tÀhelepanu detailidele, et saavutada soovitud mÔÔdikud.
Rakendused
Entiteetide tĂŒĂŒbid Data Vault

Loe lÀhemalt Data Vaulti kohta:
Entiteetide tĂŒĂŒbid peetakse muutumatuks

Loe lÀhemalt Anchor Modeli kohta:
KokkuvĂ”tete tabel arutatavate lĂ€henemisviiside ĂŒhiste omaduste ja erinevuste kohta:

Allikas: habr.com
