Andmesalvesti arendamine on aeganĂ”udev ja tĂ”sine ĂŒlesanne.
Palju sÔltub projekti elus sellest, kui hÀsti on alguses vÀlja mÔeldud objekti mudel ja andmebaasi struktuur.
Ăldiselt on aktsepteeritud lĂ€henemine erinevad kombinatsioonid tĂ€he-skeemidest ja kolmanda normaali vormist. Ăldiselt kehtib pĂ”himĂ”te: algandmed â 3NF, vitriinid â tĂ€ht. See lĂ€henemine, mis on ajaga tĂ”estatud ja toetatud paljude uuringutega, on esimene (mĂ”nikord ka ainus), mis tuleb kogenud DWH spetsialisti mĂ”tteisse, kui arutada, milline vĂ”iks vĂ€lja nĂ€ha analĂŒĂŒsihÀÀlestus.
Teisest kĂŒljest, Ă€ri tervikuna ja kliendi nĂ”udmised muutuvad kiiresti, samal ajal kui andmed kasvavad nii "sĂŒgavale" kui ka "laiusele". Siin tuleb esile tĂ€he pĂ”hiline puudus â piiratud paindlikkus.
Ja kui teie rahulikus ja hubases DWH arendaja elus Àkki:
- ilmnes vajalik "teha kiiresti midagi, seejÀrel vaatame";
- ilmnes kiiresti arenev projekt, kus uute allikate ĂŒhendamine ja Ă€ri mudeli ĂŒmberkujundamine toimub vĂ€hemalt kord nĂ€dalas;
- ilmnes klient, kes ei oska ette kujutada, milline peaks sĂŒsteem vĂ€lja nĂ€gema ja milliseid funktsioone lĂ”puks tĂ€itma, aga on eksperimentideks valmis ja soovib jĂ€rk-jĂ€rgult tĂ€psustada soovitud tulemust, liikudes jĂ€rk-jĂ€rgult selle suunas;
- projektijuhi rÔÔmsate uudistega: âNĂŒĂŒd on meil agiilne lĂ€henemine!â
VĂ”i kui teid lihtsalt huvitab, kuidas veel andmehoidlaid ĂŒles ehitada â tulge edasi!

Mida tÀhendab «paindlikkus»
Esiteks lepime kokku, milliseid omadusi peab sĂŒsteem omama, et seda saaks nimetada âpaindlikuksâ.
Tasub mĂ€rkida, et kirjeldatud omadused peavad kuuluma just sĂŒsteemile, mitte arendamise protsessile. Seega, kui soovisite lugeda Agile'ist kui arendusteemast, on parem tutvuda teiste artiklitega. NĂ€iteks, siin samas, Habras, on palju huvitavaid materjale (nii ja , kui ka ).
See ei tĂ€henda, et arendusprotsess ja andmehoidla struktuur ei oleks omavahel seotud. Ăldiselt peaks Agile pĂ”himĂ”tete kohaselt paindliku arhitektuuriga andmehoidla loomine olema mĂ€rgatavalt lihtsam. Siiski on praktikas sagedasemad variandid, kus Agile'i klassikalise DWH-i arendusega Kimballi vĂ”i DataVaulti meetodites koostatakse pigem veesoola kui Ă”nnelikke kokkusattumusi selle kahe variandi seas ĂŒhisel projektil.
Nii et millised on paindliku andmehoidla omadused? Siin saab vÀlja tuua kolm punkti:
- Varajane tarnimine ja kiire tĂ€iendamine â see tĂ€hendab, et ideaalis peaks esimene Ă€rikastus (nĂ€iteks esimesed toimivad aruanded) olema saadud nii kiiresti kui vĂ”imalik, st veel enne, kui kogu sĂŒsteem on tĂ€ielikult projekteeritud ja ellu viidud. Samuti peaks iga jĂ€rgmine tĂ€iendamine vĂ”tma vĂ”imalikult vĂ€he aega.
- Iteratiivne tĂ€iendamine â see tĂ€hendab, et iga jĂ€rgmine tĂ€iendus ei tohiks ideaaljuhul mĂ”jutada juba töötavat funktsionaalsust. Just see punkt saab sageli olema suurim Ă”udusunenĂ€gu suurtes projektides â tarde vĂ”i hiljem hakkavad eraldi objektid omandama nii palju seoseid, et on lihtsam tĂ€ielikult kopeerida loogikat kĂ”rvale, kui lisada vĂ€li olemasolevasse tabelisse. Ja kui teid ĂŒllatab, et tĂ€iendusanalĂŒĂŒsi aeg, mis on olemasolevatele objektidele mĂ”jude mÀÀramisel, vĂ”ib vĂ”tta rohkem aega kui teie ise tĂ€iendus â siis te tĂ”enĂ€oliselt ei ole veel töötanud suurtes andmehaiglas pankade vĂ”i telekommunikatsiooni sektoris.
- Pidev kohandumine muutuva Ă€ri vajadustega â ĂŒldine objekti struktuur peaks olema projekteeritud mitte lihtsalt vĂ”imaliku laiendamise arvestamiseks, vaid arvestama, et selle jĂ€rgmise laiendamise suund ei oleks teile isegi kujuteldav projekteerimise etapis.
Ja jah, nendele kĂ”igile nĂ”uetele vastamine ĂŒhes sĂŒsteemis on vĂ”imalik (loomulikult teatavate juhtumite ja mĂ”ningate ettevaatlike mĂ€rkustega).
Allpool kĂ€sitlen kahte populaarseimat tellimisprotsessi metoodikat â Anchor model ja Data Vault. Kaalust jÀÀvad sellised kaunid lĂ€henemised nagu nĂ€iteks EAV, 6NF (puhtal kujul) ja kĂ”ik, mis on seotud NoSQL lahendustega â mitte sellepĂ€rast, et need oleks halvemad, ega ka seetĂ”ttu, et see artikkel oleks siis Ă€hvardanud omada keskmise vĂ€itekirja mahtu. Lihtsalt kĂ”ik see kuulub veidi teistsuguste lahenduste klassi â kas lĂ€henemistele, mida vĂ”ite rakendada spetsiifilistes olukordades, sĂ”ltumata teie projekti ĂŒldisest arhitektuurist (nagu EAV), vĂ”i globaalselt erinevatele teabele salvestamise paradigmadele (nagu nĂ€iteks graafandmebaasid ja muud NoSQL variandid).
Klassikalise lÀhenemise probleemid ja nende lahendused paindlikes metodologia
Klassikalise lÀhenemise all mÔistan vana head tÀhte (sÔltumata spetsiifilisest rakendamisest aluseks olevates kihtides, andku Kimballi, Inmanni ja CDM austajad mulle andeks).
1. Rangelt suhted kardinaalsus
Selle mudeli peamiseks aluseks on andmete selge jaotus mÔÔtmed (Dimension) ja faktid (Fact). Ja see on, kurat vĂ”taks, loogiline â kuna andmeanalĂŒĂŒs enamikul juhtudel keskendub just teatud numbriliste nĂ€itajate (faktide) analĂŒĂŒsile teatud lĂ”ikes (mÔÔtmetes).
Samas seosed objektide vahel luuakse seostena tabelite vahel vĂ€lisvĂ”tme kaudu. See nĂ€eb vĂ€lja tĂ€iesti loogiline, kuid viib kohe esimese paindlikkuse piiranguni â rangelt mÀÀratletud seoste kardinaalsus..
See tĂ€hendab, et tabelite projekteerimise etapis peate tĂ€pselt mÀÀratlema, kas iga kahe omavahel seotud objekti vahel vĂ”ivad nad olla paljude-kaupa paljude vĂ”i ainult 1-kaupa paljude, ja "millises suunas". Sellest sĂ”ltub otseselt, millises tabelis on peamine vĂ”ti ja millises â vĂ€lisvĂ”ti. Selle suhte muutmine uute nĂ”udmiste saamisel toob tĂ”enĂ€oliselt kaasa andmebaasi ĂŒmbertöötluse.
NĂ€iteks projekteerides objekti "kassaarve", tuginedes mĂŒĂŒgiosakonna vandetĂ”otustele, olete loonud vĂ”imaluse ĂŒhe soodustuse kehtimist mitme arve positsiooni suhtes (kuid mitte vastupidi):

Ja mĂ”ne aja pĂ€rast tutvustasid kolleegid uut turundusstrateegiat, kus sama positsiooni jaoks vĂ”ivad kehtida mitmed kampaaniad samal ajal. Ja nĂŒĂŒd peate tĂ€iendama tabeleid, tuues seose vĂ€lja eraldi objekti.
(KĂ”ik tuletatud objektid, kus toimub kampaaniate ĂŒhendumine, vajavad nĂŒĂŒd samuti tĂ€iendamist).

Seosed Data Vault'is ja Anchor Model'is
Sellise olukorra vĂ€ltimine osutus ĂŒsna lihtsaks: ei tohi mĂŒĂŒgiosakonnale uskuda, selleks piisab, et kĂ”ik seosed hoiustatakse alguses eraldi tabelites ja töödeldakse nagu paljusid-mitmeid.
Selline lĂ€henemine pakuti vĂ€lja Dan Linstedt'i poolt osana paradigmast Data Vault ja tĂ€ielikult toetatud Lars RönnbĂ€ck'i poolt ĂŒhes Ankurmudel (Anchor Model).
LÔppkokkuvÔttes saame esimese eristava tunnuse paindlikest metoodikatest:
Objektide vahelisi seoseid ei hoita vanemate entiteetide atribuutides, vaid need kujutavad endast eraldi objektitĂŒĂŒpi.
V Data Vault selliseid seostetabeleid nimetatakse Link, ja seejĂ€rel mÀÀratleme selle, takistades seelĂ€bi kasutajal selgelt selle vĂ€ljaid muuta. See on ĂŒks andmete peitmise mustritest Ankurmudelis â Tie. EsmapĂ€rane, kuigi nende nimed ei ole ainus erinevus (mille ĂŒle arutame allpool). MĂ”lemas arhitektuuris vĂ”ivad sidetabelid siduda igal ajal hulga entiteete (mitte tingimata 2).
See esmapilgul nĂ€iv ĂŒlemÀÀrasus pakub olulist paindlikkust edasiste kohanduste tegemisel. Selline struktuur muutub tolerantseks mitte ainult olemasolevate seoste kardinaalsuse muutustele, vaid ka uute lisamisele â kui tĆĄekipositsioonile lisandub viide selle registrile, siis sellise sideme loomine on lihtsalt olemasolevate tabelite pealsetuseks ilma, et see mĂ”jutaks olemuslikult olemasolevaid objekte ja protsesse.

2. Andmete dubleerimine
Teine probleem, mida paindlikud arhitektuurid lahendavad, on vĂ€hem ilmselge ja omane eelkĂ”ige SCD2 tĂŒĂŒpi mÔÔtmistele (aeglased muutuvad mÔÔtmised teise tĂŒĂŒbi), kuigi mitte ainult neile.
Klassikalises andmehoidlas on mÔÔde tavaliselt tabel, mis sisaldab asendusvÔtit (PK-na) ning ka ÀrivÔtmeid ja atribuute eraldi veergudes.

Kui mÔÔt vĂ”imaldab versioonimist, lisatakse standardse vĂ€ljade kogumisse versiooni kehtivuse ajapiirangud, ja ĂŒhes allikas ilmub mitu versiooni salvestusse (iga versiooni atribuutide muudatuse kohta ĂŒks).
Kui mÔÔdul on vĂ€hemalt ĂŒks tihti muudetav versiooni atribuut, on selle mÔÔdu versioonide arv mĂ€rkimisvÀÀrne (isegi kui ĂŒlejÀÀnud atribuudid ei ole versioonilised vĂ”i ei muutu kunagi), ja kui neid atribuute on mitu, vĂ”ib versioonide arv kasvada geomeetrilises progressioonis nende arvu jĂ€rgi. Selline mÔÔt vĂ”ib vĂ”tta mĂ€rkimisvÀÀrse ketta ruumi, kuigi suur osa selles salvestatud andmetest on lihtsalt teiste ridade muutumatute atribuutide vÀÀrtuste dubleerimised.

Selle puhul kasutatakse vĂ€ga tihti ka denormaliseerimist â osa atribuute hoitakse teadlikult vÀÀrtusena, mitte viitena registrile vĂ”i muule mÔÔdule. See lĂ€henemine kiirendab andmetele juurdepÀÀsu, vĂ€hendades mÔÔdu juurde juurdepÀÀsul jĂ”udes tehtavate join'ide arvu.
Ăldiselt viib see selleni, et Sama teave salvestatakse korraga mitmes kohas.NĂ€iteks vĂ”ib elukoha ja kliendikategooria kuuluvuse kohta kĂ€iv teave korraga olla salvestatud mÔÔtmistes 'Klient' ning faktides 'Ost', 'Kohaletoimetamine' ja 'Klienditeenindusega kontakt', samuti tabelis 'Klient â Kliendihaldur'.
Ăldiselt kehtib eespool toodud ka tavaliste (mitte-versiooniliste) mÔÔtmiste kohta, kuid versioonilistel vĂ”ib olla teine mastaap: uue objekti versiooni ilmumine (eriti tagantjĂ€rele) ei too kaasa lihtsalt kĂ”igi seotud tabelite vĂ€rskendamist, vaid uute versioonide kaskaadi vĂ€ljanĂ€gemise seotud objektide puhul â kui Tabel 1 kasutatakse Tabel 2 koostamisel ja Tabel 2 Tabel 3 koostamisel jne. Isegi kui ĂŒhtegi Tabeli 1 atribuuti ei osaldu Tabeli 3 koostamisel (ja osalduvad teised Tabeli 2 atribuute, mis on saadud muudest allikatest), toob selle konstruktsiooni versioonivĂ€rskendus vĂ€hemalt kaasa lisakulud ja maksimaalselt â tĂ€iendavad versioonid Tabelis 3, mis siin 'ei puutu asjasse', ning sealt edasi ahelas.

3. Mitte-lineaarne keerukus tÀiustamisel
Iga uus vitriin, mis luuakse teise pÔhjal, suurendab kohti, kus andmed vÔivad ETL-i muudatuste tegemisel "lahkuda". See toob endaga kaasa iga jÀrgmise tÀiustuse keerukuse (ja kestuse) suurenemise.
Kui eeltoodud kehtib sĂŒsteemide kohta, mille ETL-protsessid harva muutuvad, siis sellises paradigma elamine on vĂ”imalik â piisab, kui jĂ€lgida, et uued tĂ€iustused kantaks korrektselt kĂ”ikidesse seotud objektidesse. Kui aga tĂ€iustused toimuvad tihti, tĂ”useb tĂ”enĂ€osus, et mĂ”ned seosed jĂ€etakse kogemata vahele.
Kuna "versiooniline" ETL on oluliselt keerukam kui "mitteversiooniline", siis on keeruline vĂ€ltida vigu, kui kogu seda sĂŒsteemi sageli tĂ€iustatakse.
Objektide ja atribuutide hoidmine Data Vaultis ja Anchor mudelis
Paigutus, mida paindlike arhitektuuride autorid pakuvad, vÔiks formuleerida jÀrgmiselt:
On vajalik eristada, mis muutub ja mis jÀÀb muutumatuks. Seega, hoida vÔtmed eraldi atribuutidest.
Siiski ei tohiks segi ajada mitteversiooniline atribuut koos muutumatuga: esimene ei hoia oma muudatusi ajalugu, kuid vĂ”ib muutuda (nĂ€iteks sisestamisvea parandamise vĂ”i uute andmete saamise korral) teine â ei muutu kunagi.
Arvamused selle kohta, mida tÀpselt vÔib Data Vaultis ja Anchor mudelis pidada muutumatuks, erinevad.
Arhitektuuri vaatenurgast Data Vault, muutumatuks vĂ”ib pidada kĂ”iki vĂ”tmekomplekte â looduslikud (organisatsiooni KMKR, toote kood allikasĂŒsteemis jne) ja asendavad. Samal ajal saab ĂŒlejÀÀnud atribuute jagada rĂŒhmade kaupa allika ja / vĂ”i muudatuste sageduse pĂ”hjal ja iga rĂŒhma jaoks tuleb pidada eraldi tabelit iseseisva versioonide komplekti jaoks.
KĂŒll aga Anchor Model peetakse muutumatuks ainult asendusvĂ”tme ĂŒksuse. KĂ”ik muu (sealhulgas looduslikud vĂ”tmed) â on lihtsalt tema atribuutide erijuht. Samuti kĂ”ik atribuudid on vaikimisi ĂŒksteisest sĂ”ltumatud, seega peab iga atribuut olema eraldi tabelid.
V Data Vault tabelid, mis sisaldavad ĂŒksuste vĂ”ti, nimetatakse Hubideks (Hub). Hubid sisaldavad alati fikseeritud vĂ€ljade komplekti:
- Looduslikud vĂ”tmed ĂŒksuse
- Asendav vÔti
- Viide allikale
- Salvestamise aeg
Salvestused Hubides ei muutu kunagi ja ei oma versioone. VĂ€limuselt sarnanevad hubid vĂ€ga ID-kaardiga tabelitele, mida kasutatakse mĂ”nedes sĂŒsteemides asendustena, kuid Data Vaultis soovitatakse asendustena kasutada mitte tĂ€isarvulist jĂ€rjestust, vaid hÀÀlt ettevĂ”tte vĂ”tmete kogumist. See lĂ€henemine lihtsustab suhete ja atribuutide laadimist allikatest (ei ole vaja hubiga liituda asenduse saamiseks, piisab lihtsalt ettevĂ”tte vĂ”tme hÀÀle arvutamisest), kuid vĂ”ib pĂ”hjustada muid probleeme (seotud nĂ€iteks kollisioonide, suurustundlikkuse ja trĂŒkkimata sĂŒmbolitega stringivĂ”tmetes jne), mistĂ”ttu see ei ole ĂŒldiselt aktsepteeritud.
KĂ”ik muud atribuudid salvestatakse spetsiaalsetes tabelites, mida nimetatakse satelliitideks (Satellite). Ăhel hubil vĂ”ib olla mitu satelliiti, mis salvestavad erinevaid atribuutide kogumeid.

Atribuutide jaotamine satelliitide vahel toimub koosmuutmise printsiibi jĂ€rgi â ĂŒhes satelliidis vĂ”ivad olla salvestamata atribuudid (nĂ€iteks sĂŒnnikuupĂ€ev ja isikukood fĂŒĂŒsilise isiku jaoks), teises â harva muudetavad versioonilised atribuudid (nĂ€iteks perekonnanimi ja passi number), kolmandas â sageli muudetavad (nĂ€iteks kohaletoimetamise aadress, kategooria, viimane tellimise kuupĂ€ev jne). Versioonide haldamine toimub ĂŒksikute satelliitide tasandil, mitte tervikobjekti ulatuses, seetĂ”ttu on otstarbekas jaotada atribuudid nii, et ĂŒhe satelliidi siseversioonide ĂŒhisosa oleks minimaalne (mida vĂ€hem muudab salvestatavate versioonide kogus).
Samuti, andmete laadimisprotsessi optimeerimiseks, viidatakse sageli eraldi satelliitidesse atribuudid, mis saadakse erinevatest allikatest.
Satelliidid on ĂŒhendatud Hubiga vĂ€lise vĂ”tme kaudu (mis vastab 1-ĂŒhele mitmele koodile). See tĂ€hendab, et atribuutide mitmed vÀÀrtused (nĂ€iteks mitu telefoninumbrit ĂŒhe kliendi kohta) toetab selline arhitektuur âvaikimisiâ.
V Ankurmudel (Anchor Model) tabelid, mis salvestavad vÔtmeid, nimetatakse Ankuriteks (Anchor). Nad salvestavad:
- Ainult surrogaatvÔtmed
- Viide allikale
- Salvestamise aeg
Looduslikke vÔtmeid Ankur Mudeli kontekstis peetakse tavapÀrasteks atribuutideks. See variant vÔib tunduda keerulisem mÔista, kuid see annab palju rohkem ruumi objekti tuvastamiseks.

NĂ€iteks kui sama entiteedi kohta andmed pĂ€rinevad erinevatest sĂŒsteemidest, kus igas kasutatakse oma loodusteaduslikku vĂ”tit. Data Vaultis vĂ”ib see viia vĂ€ga kohmakate struktuurideni, kus on mitu sĂ”lme (igaĂŒhele ĂŒks allikas + ĂŒhendav meistriversioon), Ankur mudelis aga iga allika loodusteaduslik vĂ”ti lĂ€heb oma atribuudisse ja seda saab laadimisel kasutada sĂ”ltumatult teistest.
Aga siin peitub ĂŒks salakaval asi: kui ĂŒks entiteet ĂŒhendab atribuute erinevatest sĂŒsteemidest, siis tĂ”enĂ€oliselt eksisteerivad mĂ”ned âliimimiseâreeglid,
V Data Vault mille jĂ€rgi peab sĂŒsteem mĂ”istma, et eri allikatest pĂ€rinevad kirjed vastavad ĂŒhele entiteedi eksemplarile. need reeglid tĂ”enĂ€oliselt mÀÀravad âasendusnĂ”lvaâ meistertĂŒĂŒbi loomise ja ei mĂ”juta Hube, mis salvestavad allika algsed vĂ”tmed ja omadused. Kui mingil hetkel andmepaigutuse reeglid muutuvad (vĂ”i saabub atribuuttĂ€iendamine, mille alusel see toimub), piisab, kui sissejuhatused ĂŒmber vormistada.
V Ankurmudel selline entiteet tĂ”enĂ€oliselt salvestatakse ainult ĂŒhte ankurdamisse. See tĂ€hendab, et kĂ”ik omadused, sĂ”ltumata sellest, kust nad on saadud, seotakse sama sissejuhatusega. ValeĂŒhendatud kirjeid eristada ja jĂ€lgida andmeluuna ajakohasust sellises sĂŒsteemis vĂ”ib olla oluliselt keerulisem, eriti kui reeglid on piisavalt keerulised ja sageli muutuvad, ja sama omadus vĂ”ib olla saadud erinevatest allikatest (kuigi see on tĂ€ielikult vĂ”imalik, kuna iga versiooni omadus sĂ€ilitab oma allika lingi).
Igal juhul, kui teie sĂŒsteemis on planeeritud funktsionaalsus kaksikvĂ€ljade de-dupliceerimine, kirje ĂŒhinemine ja MDM-i teiste elementide funktsioonid, on oluline tutvuda looduslike vĂ”tmete salvestamise aspektidega paindlikes meetodites. TĂ”enĂ€oliselt osutub mahukam Data Vault konstruktsioon ootamatult tĂ”husamaks, et vĂ€ltida liitumisvigu.
Kinnitusmudel nĂ€eb ette ka tĂ€iendava objekti tĂŒĂŒbi, mida nimetatakse SĂ”lmeks (Knot) mille olemuselt on see eriline degeneratsioonivorm ankru, mis vĂ”ib sisaldada vaid ĂŒhte atribuuti. SĂ”lmi on ette nĂ€htud kasutamiseks tasapinnaliste kataloogide salvestamiseks (nt sugu, peresuhe, klienditeeninduse kategooria jne). Erinevalt ankrist, SĂ”lm ei oma seotud atribuutide tabeleid, ja selle ainus atribuut (nimi) on alati salvestatud ĂŒhte tabelisse koos vĂ”tmega. SĂ”lmed seotakse ankrute vahelise seose tabelite kaudu (Tie) samamoodi nagu ankruid omavahel.
SĂ”lmede kasutamise osas puudub ĂŒhemĂ”tteline arvamus. NĂ€iteks, , kes edendab aktiivselt Kinnitusmudeli kasutamist Venemaal, usub (ilma alusetult), et mitte ĂŒhegi katalooge ei saa tĂ€pselt kinnitada, et see alati on staat staatiline ja ĂŒhe taseme, seega on kĂ”igi objektide jaoks parem kohe kasutada tĂ€is funktsionaalset Ankur.
Veel ĂŒks oluline erinevus Data Vaulti ja Ankurmudeli vahel on olemasolu atribuutide seostes.:
V Data Vault Seosed on sama tĂ€isvÀÀrtuslikud objektid nagu Hublid ja vĂ”ivad omada oma atribuute.. Dokumendihalduses Ankurmudel Seoseid kasutatakse ainult Ankurite ĂŒhendamiseks ja oma atribuute omada ei saa.. See erinevus toob oluliselt erinevad lĂ€henemisviisid mudeldamiseks faktide kohta, millest rÀÀgitakse hiljem.
Faktide sÀilitamine
Varem rÀÀkisime peamiselt mÔÔtmete modelleerimisest. Faktide suhtes on olukord natuke vĂ€hem ĂŒhemĂ”tteline.
V Data Vault tĂŒĂŒpiline objekt faktide hoidmiseks on Seos (Link), mille Satellitides kogutakse materiaalsed nĂ€itajad.
Selline lĂ€henemine tundub intuitiivselt mĂ”istetav. See pakub lihtsat juurdepÀÀsu analĂŒĂŒsitavatele nĂ€itajatele ja sarnaneb ĂŒldiselt traditsioonilise faktide tabeliga (ainult nĂ€itajad ei asu tabelis endas, vaid "naaber" tabelis). Kuid on ka varjatud ohte: ĂŒks tĂŒĂŒpiline mudeli tĂ€iendus â fakti vĂ”tme laiendamine â toob kaasa vajaduse uue vĂ€list vĂ”tme lisamiseks Linkile.. Ja see omakorda âmurendabâ moodulsust ja vĂ”ib potentsiaalselt tekitada vajaduse teiste objektide kohandamiseks.
V Ankurmudel Seos ei saa omada oma atribuute, seega selline lĂ€henemine ei toimi â kĂ”ik atribuudid ja nĂ€itajad peavad olema seotud ĂŒhe konkreetse ankruga. JĂ€reldus on lihtne â iga fakti jaoks on samuti vajalik oma ankru. Osa sellest, mida me oleme harjunud faktideks pidama, vĂ”ib tunduda loomulik â nĂ€iteks ostufakt seondub objekti âtellimusâ vĂ”i âkviitungigaâ, veebisaidi kĂŒlastamine â sessiooniga jne. Kuid on ka fakte, mille jaoks sellise loodusliku âkandjate objektigaâ seondumine ei ole nii lihtne â nĂ€iteks kaupade jÀÀkide arv laos pĂ€eva alguses.
Seega ei esine ankrumudelis faktivĂ”ti laiendades moodulsuse probleeme (piisab lihtsalt uue seose lisamisest vastava ankruga), kuid mudeli projekteerimine faktide esitamiseks on vĂ€hem ĂŒheselt mĂ”istetav, vĂ”ivad tekkida âkunstlikudâ ankrud, mis ei peegelda Ă€rimudelit selgelt.
Kuidas saavutatakse paindlikkus
Saadud struktuur sisaldab mĂ”lemal juhul oluliselt rohkem tabeleid, kui traditsiooniline mÔÔtmine. Kuid see vĂ”ib vĂ”tta oluliselt vĂ€hem kettaruumi sama versioonide atribuutide kogumi juures nagu traditsiooniline mÔÔtmine. Loomulikult ei ole siin mingit maagilist â kĂ”ik on normaliseerimises. Jaotades atribuute Satellitides (Data Vaultis) vĂ”i eraldi tabelites (Anchor Model), vĂ€hendame (vĂ”i vĂ€listame tĂ€ielikult) ĂŒhtede ja sama atribuutide vÀÀrtuste dubleerimist teiste muutumisel.
Kuna Data Vault kasu sĂ”ltub atribuutide jaotumisest Satellitides, ja Ankurmudel â praktiliselt otseproportsionaalne keskmise versioonide arvu osakaalu mÔÔtmisel.
Siiski on ruumikasutuse kasu oluline, kuid mitte peamine eelis atribuutide eraldi salvestamisel. Koos suhete eraldi salvestamisega muudab see hoidla modulaarseks struktuuriks. See tĂ€hendab, et eraldi atribuutide ja tervete uute valdkondade lisamine sellesse mudelisse nĂ€eb vĂ€lja nagu lisakiht olemasoleva objektide kogumi ĂŒle ilma neid muutmata. Ja see ongi see, mis muudab kirjeldatud metoodikad paindlikeks.
See on samuti nagu ĂŒleminek ĂŒksikutelt toodetelt masstootmisele â kui traditsioonilises lĂ€henemises on iga mudeli tabel ainulaadne ja vajab eraldi tĂ€helepanu, siis agiilses metoodikas on see juba komplekt tĂŒĂŒpilisi "detailide". Ăhest kĂŒljest, tabelite arv suureneb, andmete laadimise ja valimise protsessid peavad nĂ€gema keerukamad vĂ€lja. Teisest kĂŒljest â need muutuvad tĂŒĂŒpiliseks. Seega, need saavad olla automaatsetes ja hallatavad metaandmete kaudu. KĂŒsimus âkuidas me paneme?â â millele vastamine vĂ”is vĂ”tta olulise osa projekteerimistööst, ei ole nĂŒĂŒd lihtsalt aktuaalne (nagu ka kĂŒsimus mudeli muutmise mĂ”ju kohta toimivatele protsessidele).
See ei tĂ€henda, et analĂŒĂŒtikud sellises sĂŒsteemis ĂŒldse ei ole vajalikud â keegi peab siiski töötama vĂ€lja objektide kogumi koos atribuutidega ja aru saama, kust ja kuidas kĂ”ike seda laadida. Kuid töömaht ning ka vigade tĂ”enĂ€osus ja hind vĂ€henevad oluliselt. Nii analĂŒĂŒsietapis kui ka ETL-i arendamisel, mis suures osas vĂ”ib olla suunatud metaandmete redigeerimisele.
Tumeda kĂŒlg
KÔik eespool kirjeldatud teeb mÔlemad lÀhenemisviisid tÔeliselt paindlikeks, tehnoloogilisteks ja sobivateks iteratiivseks arendamiseks. Loomulikult on olemas ka "tÔrvaÀmber", millest te juba ilmselt aimate.
Andmete dekompositsioon, mis on paindlike arhitektuuride moodulsuse alus, toob kaasa tabelite arvu suurenemise ja vastavalt sellele, ĂŒlekande kulud ĂŒhenduste tegemisel otsingutes. KĂ”ik mÔÔtme atribuudid hankimiseks piisab klassikalises andmehoidlas ĂŒhest valikust, kuid paindlik arhitektuur nĂ”uab mitmeid ĂŒhendusi. Samas, kui raportite jaoks saab kĂ”ik need ĂŒhendused ette kirjutada, siis SQL-i kĂ€sitsi kirjutamisega harjunud analĂŒĂŒtikud kannatavad kahekordselt.
On mitmeid fakte, mis hÔlbustavad sellist olukorda:
Suurte mÔÔtmete korral ei kasutata harva kĂ”iki selle atribuute samaaegselt. See tĂ€hendab, et ĂŒhendusi vĂ”ib olla vĂ€hem, kui esmapilgul mudelit vaadates nĂ€ib. Data Vaultis saab arvesse vĂ”tta ka eeldatavat jagamise sagedust, kui atribuudid jaotatakse satelliitide vahel. Samuti on HĂŒbriidid vĂ”i Ankrud vajalikud peamiselt surrogaatide genereerimiseks ja kaardistamiseks laadimisfaasis ning neid kasutatakse harva pĂ€ringutes (eriti see kehtib Ankrute kohta).
KĂ”ik ĂŒhendused â vĂ”tme kaudu. Lisaks vĂ€hendab andmete âkokkusurutudâ viis salvestamise kulusid tabelite skaneerimise puhul seal, kus see on vajalik (nĂ€iteks atribuudivÀÀrtuse jĂ€rgi filtreerimise ajal). See vĂ”ib viia selleni, et normaliseeritud andmebaas, kus on palju ĂŒhendusi, vĂ”ib olla isegi kiirem kui ĂŒhe suure mÔÔtme skaneerimine, millel on palju versioone reas.
NĂ€iteks, siin artiklis on ĂŒksikasjalik vĂ”rdlev test Ankrumudeli jĂ”udlusest, kasutades ĂŒhte tabelit.
Palju sÔltub mootorist. Paljudel kaasaegsetel platvormidel on sisemised mehhanismid join'ide optimeerimiseks. NÀiteks oskavad MS SQL ja Oracle "vahel" vÀlja jÀtta join'id tabelitele, kui nende andmeid ei kasutata kusagil mujal, vÀlja arvatud teistes join'ides, ja need ei mÔjuta lÔppvalikut (table/join elimination), samas kui MPP Vertica on , tÔestanud end suurepÀrase mootorina Ankur mudeli jaoks, arvestades teatavat kÀsitsi optimeerimist pÀringu plaanis. Teiselt poolt tundub Ankur mudeli hoidmine nÀiteks Click House'is, mis on joinide osas piiratud toetusega, hetkel mitte kÔige parem idee.
Lisaks on mÔlema arhitektuuri jaoks olemas spetsiaalsed tehnikad, mis lihtsustavad andmete juurde pÀÀsemist (nii pÀringute sooritusvÔime kui ka lÔppkasutajate jaoks). NÀiteks Point-In-Time tabelid Data Vault'is vÔi spetsiaalsed tabelifunktsioonid Ankur mudelis.
Kokku
KĂ€sitletud paindlike arhitektuuride peamine olemus seisneb nende âkonstruktsiooniâ moodulsuses.
Just see omadus vÔimaldab:
- PĂ€rast teatud esialgset ettevalmistust, mis on seotud metaandmete juurutamise ja pĂ”hisiseste ETL algoritmide kirjutamisega, kiiresti esitada kliendile esimene tulemus. paaride raportite kujul, mis sisaldavad andmeid vaid mĂ”ne objekti allika kohta. Ăksikasjaliku (isegi kĂ”rgtaseme) objekti mudeli tĂ€ielik lĂ€bimĂ”tlemine pole sel eesmĂ€rgil vajalik.
- Andmemudel vĂ”ib alustada töötamist (ja tooma kasu) vaid 2-3 objektiga ning seejĂ€rel aeglaselt laieneda (seoses humoristliku mudeliga, mida Nikolai kaunis vĂ”rdlus seenetĂŒvesega).
- Enamik tÀiendusi, sealhulgas temaatika laiendamine ja uute allikate lisamine ei mÔjuta olemasolevat funktsionaalsust ega tÀhenda ohtu olemasoleva töö katkestamiseks..
- Standardsed elemendid dekomponeerimise tĂ”ttu muudavad ETL-protsessid sellistes sĂŒsteemides ĂŒhtseks, nende kirjutamine on algoritmisele alluv ja lĂ”puks automaatimisele.
Sellise paindlikkuse hind on toime. See ei tÀhenda, et selliste mudelite puhul ei saa saavutada vastuvÔetavat tulemuslikkust. Enamasti vÔib teil lihtsalt olla vaja rohkem pingutusi ja tÀhelepanu detailidele, et saavutada vajalikke mÔÔdikuid.
Rakendused
Entiteedi tĂŒĂŒbid Data Vault

Rohkem teavet Data Vaulti kohta:
Entiteedi tĂŒĂŒbid Anchor Model

Lisainfo Anchor Modelist:
KokkuvÔtte tabel uuritud lÀhenemisviiside sarnasuste ja erinevuste kohta:

Allikas: habr.com
