Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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!

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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 ĂŒlevaatuslikke ja praktilisi, kui ka problemaatilisi).

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:

  1. 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.
  2. 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.
  3. 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):

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade
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).

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade
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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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.

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

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, Nikolai Golov, 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 sellest 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 kolleegide kogemuste pÔhjal Avitos, 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 rakendas 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

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

Rohkem teavet Data Vaulti kohta:
Dan Litsedti sait
Kogu info Data Vaultist vene keeles
Data Vaultist Habr's

Entiteedi tĂŒĂŒbid Anchor Model

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

Lisainfo Anchor Modelist:

Anchor Modeli arendajate sait
Artikkel Anchor Modeli rakendamise kogemusest Avitos

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

Paindlike DWH projekteerimise metodoloogiate ĂŒlevaade

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster