Översikt över flexibla metodologier för design av DWH

Utvecklingen av lagringslösningar Àr en lÄng och seriös process.

Mycket av projektets framgÄng beror pÄ hur vÀl den objektorienterade modellen och databasstrukturen Àr genomtÀnkta frÄn början.

Den allmĂ€nt accepterade metoden har varit och förblir olika varianter av att kombinera stjĂ€rnschemat med tredje normalformen. Som regel: kĂ€lldata — 3NF, datalager — stjĂ€rna. Denna metod, som har bevisats över tid och stöds av ett stort antal studier, Ă€r det första (och ibland det enda) som kommer i Ă„tanke för en erfaren DWH-specialist nĂ€r de tĂ€nker pĂ„ hur ett analytiskt datalager bör se ut.

Å andra sidan, Ă€r det vanligt att företagsbehov och kundkrav förĂ€ndras snabbt, och data vĂ€xer bĂ„de "djupgĂ„ende" och "brett". HĂ€r uppdagar den största nackdelen med stjĂ€rnan — begrĂ€nsad... flexibilitet.

Och om det plötsligt i ditt lugna och bekvÀma liv som DWH-utvecklare:

  • uppkom en uppgift att "göra nĂ„got snabbt, och sĂ„ ser vi senare";
  • det dök upp ett snabbt vĂ€xande projekt med nya datakĂ€llor som Ă€ndrar affĂ€rsmodellen minst en gĂ„ng i veckan;
  • det kom en kund som inte kan förestĂ€lla sig hur systemet ska se ut och vilka funktioner det ska utföra, men som Ă€r öppen för experiment och successivt klargör önskat resultat i en gradvis nĂ€rmande process;
  • en projektledare kom med den glĂ€djande nyheten: "Och nu har vi Agile!"

Eller om du bara Ă€r nyfiken pĂ„ hur man kan bygga lagringslösningar — vĂ€lkommen under kat!

Översikt över flexibla metodologier för design av DWH

Vad betyder "flexibilitet"?

För att börja med, lÄt oss definiera vilka egenskaper ett system mÄste ha för att kunna kallas "flexibelt".

Det Àr vÀrt att notera att de egenskaper som beskrivs bör relatera till system för, snarare Àn till utvecklingsprocessen. DÀrför, om du ville lÀsa om Agile som en utvecklingsmetodik, Àr det bÀttre att kolla in andra artiklar. Till exempel finns det pÄ Habré massor av intressanta material (som översikter och praktiska, sÄvÀl som problem.).

Det betyder inte att utvecklingsprocessen och strukturen för ett Data Warehouse (DWH) Ă€r helt orelaterade. Generellt sett borde det vara betydligt lĂ€ttare att utveckla ett flexibelt datalager enligt Agile-metoden. Men i praktiken möter vi oftare situationer dĂ€r utvecklingen följer mer traditionella metoder enligt Kimball eller Data Vault — enligt vattenfallsmodellen, snarare Ă€n lyckliga exempel pĂ„ flexibilitet i bĂ„da dess former pĂ„ ett och samma projekt.

SÄ, vilka möjligheter bör ett flexibelt datahanteringssystem inneha? HÀr kan tre punkter sammanfattas:

  1. Tidigare leverans och snabb vidareutveckling — det betyder att den första affĂ€rsresultatet (till exempel de första fungerande rapporterna) idealiskt ska uppnĂ„s sĂ„ tidigt som möjligt, det vill sĂ€ga innan systemet helt har designats och implementerats. Varje nĂ€sta vidareutveckling ska ocksĂ„ ta sĂ„ lite tid som möjligt.
  2. Iterativ vidareutveckling — detta betyder att varje nĂ€sta vidareutveckling i idealet inte ska pĂ„verka redan fungerande funktionalitet. Just denna punkt blir ofta den största mardrömmen i stora projekt — förr eller senare börjar enskilda objekt att fĂ„ sĂ„ mĂ„nga samband att det blir enklare att helt Ă„terskapa logiken i en kopia bredvid, Ă€n att lĂ€gga till ett fĂ€lt i en befintlig tabell. Om du undrar varför analysen av pĂ„verkan av vidareutvecklingen pĂ„ befintliga objekt kan ta mer tid Ă€n sjĂ€lva vidareutvecklingen — har du sannolikt Ă€nnu inte arbetat med stora datalager inom bank eller telekom.
  3. Kronisk anpassning till förĂ€ndrade affĂ€rskrav — den övergripande objektstrukturen bör designas inte bara med tanke pĂ„ potentiell utvidgning utan ocksĂ„ med berĂ€kning pĂ„ att riktningen för denna nĂ€sta utvidgning kan ha varit sĂ„ ovĂ€ntad att du aldrig ens kunde ha drömt om den under designfasen.

Och ja, att uppfylla alla dessa krav i ett system Àr möjligt (naturligtvis under vissa omstÀndigheter och med vissa förbehÄll).

Nedan kommer jag att granska de tvĂ„ mest populĂ€ra metoderna för flexibel design av datalager — Anchor-modellen och Data Vault. Det finns mĂ„nga fantastiska metoder som EAV, 6NF (i sin rena form) och allt som hör till NoSQL-lösningar — inte för att de skulle vara sĂ€mre, och inte ens för att artikeln i sĂ„ fall skulle riskera att bli lika omfattande som en genomsnittlig avhandling. Det handlar istĂ€llet om lösningar som tillhör en annan klass — antingen metoder som kan tillĂ€mpas i specifika fall oavsett den övergripande arkitekturen av ditt projekt (som EAV), eller helt andra paradigmer för datalagring (som till exempel grafdatabaser och andra NoSQL-alternativ).

Problemen med den "klassiska" metoden och deras lösningar i flexibla metoder

Med den "klassiska" metoden avser jag den gamla goda stjÀrnan (oavsett den specifika implementeringen av de underliggande lagren, förlÄt mig Kimball-, Inmon- och CDM-anhÀngare).

1. Strikt kardinalitet av relationerna

Denna modell bygger pĂ„ en tydlig uppdelning av data i dimensioner (Dimension) och fakta (Fact). Och det Ă€r, för sjutton, logiskt — eftersom dataanalys i de flesta fall handlar om att analysera specifika kvantitativa indikatorer (fakta) i specifika dimensioner (mĂ€tvĂ€rden).

Relationerna mellan objekten definieras som relationer mellan tabeller via en frĂ€mmande nyckel. Detta verkar ganska naturligt, men leder omedelbart till den första begrĂ€nsningen av flexibiliteten — den strikta definitionen av kardinaliteten av relationerna.

Det betyder att under designfasen av tabeller mÄste du noggrant definiera för varje par relaterade objekt om de kan relateras som mÄnga-till-mÄnga eller bara en-till-mÄnga, och "i vilken riktning". Detta pÄverkar direkt vilken tabell som kommer att ha primÀrnyckeln och vilken som kommer att ha den frÀmmande. En förÀndring av detta förhÄllande vid nya krav kommer med stor sannolikhet att leda till en omarbetning av databasen.

Till exempel, nÀr du designade objektet "kassakvitto" baserat pÄ den faststÀllda informationen frÄn försÀljningsavdelningen, inkluderade du möjligheten för en kampanj att gÀlla för flera kvitto-poster (men inte omvÀnt):

Översikt över flexibla metodologier för design av DWH
Och efter en tid införde kollegor en ny marknadsföringsstrategi dÀr flera kampanjer kan gÀlla för samma post samtidigt.. Och nu mÄste du revidera tabellerna och separera relationen i ett eget objekt.

(Alla hÀrledda objekt dÀr det sker en joint check pÄ promo behöver nu ocksÄ bearbetas).

Översikt över flexibla metodologier för design av DWH
Relationer i Data Vault och Anchor Model

Att undvika en sÄdan situation visade sig vara ganska enkelt: man behöver inte lita pÄ försÀljningsavdelningen för detta. alla relationer bör initialt lagras i separata tabeller och behandlas som mÄnga-till-mÄnga.

Denna metod föreslogs av Dan Linstedt som en del av paradigmet Data Vault och stöddes helt av Lars RönnbÀck pÄ Anchor Model.

Som resultat fÄr vi den första distinkta egenskapen hos flexibla metoder:

Relationer mellan objekt lagras inte i attributen för överordnade entiteter utan representerar en skild typ av objekt.

I Data Vault Dessa relations-tabeller kallas LĂ€nk, och i Anchor Model — Tie. Vid första anblicken ser de mycket lika ut, Ă€ven om deras kvaliteter inte begrĂ€nsas till namnen (som kommer att diskuteras nedan). I bĂ„da arkitekturerna kan relations-tabeller koppla ihop vilket antal entiteter som helst (inte nödvĂ€ndigtvis 2).

Denna till synes överflödiga struktur ger betydande flexibilitet vid anpassningar. Strukturen blir tolerant inte bara mot förĂ€ndringar i kardinaliteter hos existerande relationer, utan ocksĂ„ för att lĂ€gga till nya — om det nu skulle tillkomma en referens till kassören som hanterade kvittot, skulle tillkomsten av en sĂ„dan koppling bli en enkel överbyggnad över de befintliga tabellerna utan pĂ„verkan pĂ„ nĂ„gra befintliga objekt och processer.

Översikt över flexibla metodologier för design av DWH

2. Duplicering av data

Det andra problemet som flexibla arkitekturer löser Àr mindre uppenbart och Àr frÀmst karakteristiskt för mÄtt av typ SCD2 (lÄngsamt förÀnderliga mÄtt av den andra typen), Àven om det inte bara gÀller dem.

I ett klassiskt datalager representerar ett mÄtt vanligtvis en tabell som innehÄller en surrogatnyckel (som PK) samt en uppsÀttning affÀrsnycklar och attribut i separata kolumner.

Översikt över flexibla metodologier för design av DWH

Om ett mÄtt stöder versionshantering, lÀggs tidsgrÀnser för versions giltighet till standarduppsÀttningen av fÀlt, och för en rad i kÀllan visas flera versioner i datalagret (en för varje förÀndring av versionsattributen).

Om en mÀtning innehÄller minst en ofta förÀndrad versionsattribut kommer antalet versioner av denna mÀtning att bli betydande (Àven om övriga attribut inte Àr versionerade eller aldrig förÀndras), och om det finns flera sÄdana attribut kan antalet versioner vÀxa exponentiellt i förhÄllande till deras antal. En sÄdan mÀtning kan ta upp ett betydande utrymme pÄ hÄrddisken, Àven om den största delen av de lagrade uppgifterna bara Àr dubbletter av vÀrden för oförÀndrade attribut frÄn andra rader.

Översikt över flexibla metodologier för design av DWH

Detta innebĂ€r att det ofta Ă€ven tillĂ€mpas denormalisering — en del av attributen lagras medvetet som vĂ€rden istĂ€llet för referenser till en referenstabell eller annan mĂ€tning. Denna metod pĂ„skyndar Ă„tkomsten till data och minskar antalet join-operationer vid Ă„tkomst till mĂ€tningen.

Som regel leder detta till att samma information lagras samtidigt pÄ flera stÀllen. Till exempel kan information om bostadsregion och kundkategori lagras samtidigt i mÀtningarna "Kund" samt fakta "Köp", "Leverans" och "Kontaktsamtal", samt i kopplingstabellen "Kund - Kundchef".

Generellt sett gĂ€ller det ovanstĂ„ende Ă€ven för vanliga (icke-versionerade) mĂ€tningar, men det kan ha en annan skala för versionerade: införandet av en ny version av ett objekt (sĂ€rskilt retroaktivt) leder inte bara till en uppdatering av alla relaterade tabeller, utan till en kaskad av nya versioner av relaterade objekt — nĂ€r Tabell 1 anvĂ€nds för att bygga Tabell 2, och Tabell 2 anvĂ€nds för att bygga Tabell 3 etc. Även om inget attribut i Tabell 1 deltar i byggandet av Tabell 3 (utan andra attribut i Tabell 2 som kommer frĂ„n andra kĂ€llor), kommer ett versionsuppdatering av denna struktur Ă„tminstone att leda till ytterligare overheadkostnader, och som mest till onödiga versioner i Tabell 3, som hĂ€r överhuvudtaget inte har nĂ„got med saken att göra, och sĂ„ vidare i kedjan.

Översikt över flexibla metodologier för design av DWH

3. Icke-linjÀr komplexitet i modifieringar

Samtidigt ökar varje ny vy som byggs pÄ grundval av en annan antalet stÀllen dÀr datan kan "skiljas" vid Àndringar i ETL. Detta leder i sin tur till en ökning av komplexiteten (och varaktigheten) av varje nÀsta modifiering.

Om det ovanstĂ„ende gĂ€ller system med sĂ€llan Ă€ndrade ETL-processer kan man leva i en sĂ„dan paradigm – det rĂ€cker med att se till att nya Ă€ndringar korrekt införlivas i alla relaterade objekt. Om Ă€ndringar dĂ€remot sker ofta ökar risken för att man av misstag "missar" flera kopplingar avsevĂ€rt.

Om man dessutom tar hÀnsyn till att "versions" ETL Àr betydligt mer komplicerat Àn "icke-versions", blir det ganska svÄrt att undvika misstag vid frekvent modifiering av hela detta system.

Lagring av objekt och attribut i Data Vault och Anchor Model

Den föreslagna metoden av författarna till flexibla arkitekturer kan formuleras sÄ hÀr:

Det Àr nödvÀndigt att separera det som förÀndras frÄn det som förblir oförÀndrat. Det vill sÀga att lagra nycklar separat frÄn attribut.

Samtidigt ska man inte blanda ihop icke-versionerad attribut med oförÀndrad: den första lagrar ingen historik över sina förÀndringar men kan förÀndras (till exempel vid korrigering av inmatningsfel eller vid mottagande av nya data), den andra förÀndras aldrig.

Åsikterna om vad som kan anses som oförĂ€ndrat i Data Vault och Anchor-modellen skiljer sig.

Ur arkitekturens perspektiv Data Vault, kan man betrakta hela uppsĂ€ttningen av nycklar – naturliga (organisationsnummer, varukod i kĂ€llsystemet etc.) och surrogatnycklar. Samtidigt kan övriga attribut delas in i grupper efter kĂ€lla och/eller frekvens av förĂ€ndringar och för varje grupp upprĂ€tta en separat tabell med en oberoende uppsĂ€ttning versioner.

I Anchor Model-paradigmet anses dÀremot oförÀndrad endast surrogatnyckeln för entiteten. Allt annat (inklusive naturliga nycklar) Àr helt enkelt ett sÀrskilt fall av dess attribut. Dessutom Àr alla attribut som standard oberoende av varandra , dÀrför bör enseparat tabell skapas Tabeller som innehÄller entitetsnycklar kallas.

I Data Vault Hubbar (Hub) . Hubbar innehÄller alltid ett fast antal fÀlt:Naturliga nycklar för entiteten

  • Surrogatnyckel
  • LĂ€nk till kĂ€llan
  • Tid för inlĂ€ggning av posten
  • Poster i Hubbar

Ă€ndras aldrig och har inga versioner. ĐœĐžĐșĐŸĐłĐŽĐ° ĐœĐ” ĐžĐ·ĐŒĐ”ĐœŃŃŽŃ‚ŃŃ Đž ĐœĐ” ĐžĐŒĐ”ŃŽŃ‚ ĐČДрсОĐč. Externt liknar hubs tabeller av typen ID-map, anvĂ€nd i vissa system för att generera surrogater, men i Data Vault rekommenderas att anvĂ€nda en hash av en uppsĂ€ttning affĂ€rsnycklar istĂ€llet för heltalsssekvenser som surrogater. Denna metod förenklar inlĂ€sning av relationer och attribut frĂ„n kĂ€llor (det behövs ingen join pĂ„ hubben för att fĂ„ surrogatet, man rĂ€cker med att berĂ€kna hash av den naturliga nyckeln), men kan leda till andra problem (kopplade till till exempel kollisioner, stora och smĂ„ bokstĂ€ver och icke-tryckbara tecken i strĂ€ngnycklar etc.), och Ă€r dĂ€rför inte allmĂ€nt accepterad.

Alla andra attribut för entiteter lagras i speciella tabeller, kallade Satelliter (Satellit). En hub kan ha flera satelliter som lagrar olika uppsÀttningar attribut.

Översikt över flexibla metodologier för design av DWH

Fördelning av attribut bland satelliter sker enligt principen gemensam förĂ€ndring — i en satellit kan attribut som inte Ă€r versionshanterade (till exempel födelsedatum och personnummer för en fysisk person) lagras, i en annan sĂ€llan förĂ€ndrade versionshanterade (till exempel efternamn och passnummer), och i en tredje ofta förĂ€ndrade (till exempel leveransadress, kategori, datum för senaste bestĂ€llning etc.). Versionshantering sker pĂ„ nivĂ„n av individuella satelliter, inte pĂ„ entiteten som helhet, dĂ€rför Ă€r det rimligt att distribuera attribut sĂ„ att överlappning av versioner inom en satellit Ă€r minimal (vilket minskar det totala antalet lagrade versioner).

Dessutom, för att optimera datainlÀsningsprocessen, flyttas ofta attribut som erhÄlls frÄn olika kÀllor till separata satelliter.

Satelliter kopplas till hubben via en utlĂ€ndsk nyckel (vilket motsvarar en kardinalitet 1-till-mĂ„nga). Det innebĂ€r att multipla vĂ€rden av attribut (till exempel flera kontakttelefonnummer för en kund) stöds av denna arkitektur “per standard”.

I Ankarmodell (Anchor Model) tabeller som lagrar nycklar kallas Ankarpunkter (Anchor). Och de lagrar:

  • Endast surrogatnycklar
  • Tid för inlĂ€ggning av posten
  • Poster i Hubbar

Naturliga nycklar betraktas enligt Ankarmodellen som vanliga attribut. Denna variant kan verka mer komplex att förstÄ, men den ger mycket större utrymme för identifiering av objekt.

Översikt över flexibla metodologier för design av DWH

Till exempel, om uppgifter om samma entitet kan komma frÄn olika system, dÀr var och en anvÀnder sin egen naturliga nyckel. I Data Vault kan detta leda till ganska komplicerade konstruktioner av flera hubbar (en per kÀlla + en sammanfogande masterversion), medan i Ankarmodellen hamnar den naturliga nyckeln frÄn varje kÀlla i sin egen attribut och kan anvÀndas vid inlÀsning oberoende av alla andra.

Men hÀr finns ocksÄ en listig detalj: om en entitet samlar attribut frÄn olika system, finns det troligen vissa regler för "sammanfogning", enligt vilka systemet mÄste förstÄ att poster frÄn olika kÀllor motsvarar en och samma instans av entiteten.

I Data Vault Dessa regler kommer troligen att bestÀmma utformningen av en "surrogathubb" för masterentiteten och pÄverka Hubbarna som lagrar de naturliga nycklarna frÄn kÀllorna och deras ursprungliga attribut. Om reglerna för sammanfogning Àndras vid nÄgot tillfÀlle (eller om det kommer en uppdatering av attributen som de baseras pÄ), rÀcker det att omforma surrogat-hubbarna.

I Ankarmodellen kommer dÀremot troligen att lagra en sÄdan entitet i en enda ankar.. Det betyder att alla attribut, oavsett vilken kÀlla de kommer frÄn, kommer att knytas till samma surrogat. Att separera felaktigt sammanfogade poster och övergripande följa aktuell sammanfogning i ett sÄdant system kan vara betydligt svÄrare, sÀrskilt om reglerna Àr ganska komplexa och ofta Àndras, och samma attribut kan komma frÄn olika kÀllor (Àven om det Àr absolut möjligt, eftersom varje version av attributet behÄller en lÀnk till sin kÀlla).

I vilket fall som helst, om din system förutsÀtter implementering av funktionalitet för deduplicering, sammanfogning av poster och andra element i MDM, bör du sÀrskilt noga bekanta dig med aspekterna av lagring av naturliga nycklar i flexibla metoder. Det Àr möjligt att den mer komplicerade konstruktionen Data Vault plötsligt visar sig vara sÀkrare ur perspektivet av sammanfogningens fel.

Ankarmodellen förutsÀtter ocksÄ en ytterligare typ av objekt som kallas Knute (Knot) det handlar i grunden om en speciell degenererad typ av ankar., som kan innehÄlla endast en attribut. Noderna Àr avsedda att anvÀndas för att lagra platta register (till exempel kön, civilstÄnd, kundkategori osv). Till skillnad frÄn Ankar, har Noden inga relaterade attributtabeller, och dess enda attribut (namn) lagras alltid i en tabell med nyckeln. Noder kopplas till Ankar genom sambands-tabeller (Tie) pÄ samma sÀtt som ankar kopplas till varandra.

Det finns ingen entydig Äsikt om anvÀndningen av Noder. Till exempel Nikolaj Golov, som aktivt frÀmjar anvÀndningen av Ankar-modellen i Ryssland, anser (inte utan grund) att för nÄgot register kan man inte med sÀkerhet pÄstÄ att det alltid kommer att vara statiskt och en nivÄ, sÄ det Àr bÀttre att anvÀnda en fullstÀndig Anka frÄn början för alla objekt.

En annan viktig skillnad mellan Data Vault och Ankar-modellen Àr nÀrvaron av attribut hos relationer:

I Data Vault Relationer Àr lika fullvÀrdiga objekt som Huber, och kan ha egna attribut. I Ankarmodellen Relationer anvÀnds endast för att koppla samman Ankar och kan inte ha egna attribut. Denna skillnad ger vÀsentligt olika tillvÀgagÄngssÀtt för modellering fakta, vilket kommer att diskuteras vidare.

Lagring av fakta

Tidigare har vi frÀmst pratat om modellering av dimensioner. Faktabitar Àr nÄgot mindre entydiga.

I Data Vault en typisk objekt för att lagra fakta Àr Relation (Link), vars Satelliter innehÄller faktiska mÄtt.

Denna metod verkar intuitivt förstĂ„elig. Det ger enkel Ă„tkomst till de analyserade mĂ„tten och liknar helt klart en traditionell faktatabell (endast mĂ„tten lagras inte i sjĂ€lva tabellen, utan i en "grann" tabell). Men det finns ocksĂ„ fallgropar: en av standardjusteringarna av modellen — att utvidga faktanyckeln — medför behovet av att lĂ€gga till en ny extern nyckel i Link. Och detta "krossar" i sin tur modulĂ€rheten och potentiellt leder till att andra objekt behöver justeras.

I Ankarmodellen Relationen kan inte ha egna attribut, sĂ„ detta tillvĂ€gagĂ„ngssĂ€tt fungerar inte — absolut alla attribut och mĂ„tt mĂ„ste ha koppling till en specifik anka. Slutsatsen Ă€r enkelt — för varje faktum behövs ocksĂ„ en specifik anka.. För en del av det vi Ă€r vana att tolka som fakta kan detta verka naturligt — till exempel, köpet översĂ€tts vĂ€l till objektet “bestĂ€llning” eller “kvitto”, besöket pĂ„ en webbplats — till sessioner osv. Men det finns ocksĂ„ fakta för vilka det inte Ă€r sĂ„ lĂ€tt att hitta ett naturligt “objekt-bĂ€rare” — till exempel, lagersaldot vid dagens början.

DĂ€rför uppstĂ„r det inga problem med modulĂ€r design nĂ€r man utvecklar faktanyckeln i Ankar-modellen (det rĂ€cker att helt enkelt lĂ€gga till en ny relation till den aktuella ankaren), men designa modellen för att visa fakta Ă€r mindre entydig, det kan dyka upp “konstgjorda” ankare som visar affĂ€rsmodellens objekt illa.

Hur flexibilitet uppnÄs

Den resulterande konstruktionen i bĂ„da fallen innehĂ„ller betydligt fler tabeller, Ă€n traditionell mĂ€tning. Men de kan ta upp betydligt mindre diskutrymme vid samma uppsĂ€ttning versionsattribut som traditionell mĂ€tning. Ingen magi hĂ€r, naturligtvis — allt handlar om normalisering. Genom att fördela attributen över Satelliter (i Data Vault) eller separata tabeller (Ankar-modell), minskar vi (eller helt utesluter) duplicering av vĂ€rden för vissa attribut vid förĂ€ndring av andra.

För Data Vault vinsten kommer att bero pĂ„ distributionen av attributen över Satelliter, och för Ankarmodellen — Ă€r nĂ€stan direkt proportionell mot det genomsnittliga antalet versioner per mĂ€tobjekt.

Men vinsten vad gĂ€ller upptaget utrymme — Ă€r en viktig men inte den frĂ€msta fördelen med separat lagring av attribut. Tillsammans med separat lagring av relationer, gör denna metod lager till en modulĂ€r konstruktion. Det betyder att tillĂ€gg av bĂ„de separata attribut och helt nya Ă€mnesomrĂ„den i en sĂ„dan modell framstĂ„r som ett tillĂ€gg till den befintliga uppsĂ€ttningen objekt utan att förĂ€ndra dem. Och det Ă€r just det som gör de beskrivna metoderna flexibla.

Det pĂ„minner ocksĂ„ om övergĂ„ngen frĂ„n styckeproduktion till massproduktion — om det i det traditionella tillvĂ€gagĂ„ngssĂ€ttet Ă€r varje tabell i modellen unik och krĂ€ver sĂ€rskild uppmĂ€rksamhet, sĂ„ i flexibla metoder Ă€r det redan en uppsĂ€ttning standard “detaljer”. Å ena sidan, ökar antalet tabeller, inlĂ€snings- och urvalprocessen mĂ„ste se mer komplex ut. Å andra sidan — de blir standardiserade. Det betyder att de kan vara automatiserade och hanteras av metadata. FrĂ„gan "hur ska vi lĂ€gga upp det?" vars svar tidigare kunde ta en betydande del av arbetet med att designa Ă€ndringar, stĂ„r nu helt enkelt inte lĂ€ngre (liksom frĂ„gan om hur förĂ€ndringen av modellen pĂ„verkar de pĂ„gĂ„ende processerna).

Det betyder inte att analytiker i ett sĂ„dant system Ă€r helt onödiga — nĂ„gon mĂ„ste fortfarande arbeta igenom en uppsĂ€ttning objekt med attribut och ta reda pĂ„ var och hur allt detta ska laddas. Men mĂ€ngden arbete, liksom sannolikheten och kostnaden för fel, minskar avsevĂ€rt. BĂ„de i analysfasen och under utvecklingen av ETL, som i stor utstrĂ€ckning kan reduceras till att redigera metadata.

Den mörka sidan

Det som beskrivits ovan gör bÄda tillvÀgagÄngssÀtten verkligen flexibla, tekniska och lÀmpliga för iterativa förÀndringar. SjÀlvklart finns det ocksÄ en "fat av tjÀra" som ni sÀkert redan misstÀnker.

Data dekomposition, som Àr grunden för modulÀra flexibla arkitekturer, leder till en ökning av antalet tabeller och dÀrmed överheadkostnader för join-operationer vid urval. För att helt enkelt fÄ alla attribut av en dimension rÀcker det med en enkel select i en klassisk datalager, medan en flexibel arkitektur krÀver flera joins. Om för rapporterna kan alla dessa joins skrivas i förvÀg, kommer analytiker som Àr vana vid att skriva SQL för hand att drabbas dubbelt.

Det finns flera fakta som underlÀttar en sÄdan situation:

Vid arbete med stora dimensioner anvÀnds nÀstan aldrig alla dess attribut samtidigt. Det betyder att antalet joins kan vara fÀrre Àn vad som verkar vid första ögonkastet pÄ modellen. I Data Vault kan man ocksÄ ta hÀnsyn till den förvÀntade frekvensen av gemensam anvÀndning vid fördelning av attribut över satelliter. SjÀlva Hubbarna eller Ankrarna behövs frÀmst för att generera och mappa surrogat i inlÀsningsfasen och anvÀnds sÀllan i frÄgor (sÀrskilt gÀller detta Ankrarna).

Alla joins — pĂ„ nyckeln. Dessutom minskar en mer "komprimerad" lagringsmetod overheadkostnaderna för tabellskanning dĂ€r det Ă€r nödvĂ€ndigt (till exempel vid filtrering efter attributvĂ€rde). Detta kan leda till att en frĂ„ga frĂ„n en normaliserad databas med mĂ„nga joins kan vara snabbare Ă€n att skanna en tung dimension med mĂ„nga versioner per rad.

Till exempel, denna denna artikel innehÄller ett detaljerat jÀmförande prestandatest av Anchor-modellen med en frÄga frÄn en tabell.

Mycket beror pĂ„ motorn. MĂ„nga moderna plattformar har interna mekanismer för att optimera joins. Till exempel kan MS SQL och Oracle "hoppa över" joins pĂ„ tabeller om deras data inte anvĂ€nds nĂ„gonstans, förutom av andra joins och inte pĂ„verkar den slutliga frĂ„gan (table/join elimination), medan MPP Vertica, enligt erfarenheterna frĂ„n kollegor pĂ„ Avito,visade sig vara en utmĂ€rkt motor för Anchor-modellen med viss manuell planoptimering. Å andra sidan verkar det inte vara en sĂ€rskilt bra idĂ© att lagra Anchor-modellen pĂ„ Click House, som har begrĂ€nsat stöd för joins.

Dessutom finns det sÀrskilda tekniker, som underlÀttar datÄtkomst (bÄde ur perspektivet av förfrÄgningsprestanda och för slutanvÀndare). Till exempel, Point-In-Time tabeller i Data Vault eller speciella tabellfunktioner i Anchor-modellen.

Sammanfattningsvis

HuvudpoÀngen med de flexibla arkitekturer som diskuterats Àr deras modulÀra "konstruktioner".

Just denna egenskap gör det möjligt att:

  • Efter en viss initial förberedelse, relaterad till distributionsmetadata och skrivning av grundlĂ€ggande ETL-algoritmer, snabbt tillhandahĂ„lla kunden det första resultatet i form av nĂ„gra rapporter som innehĂ„ller data frĂ„n bara nĂ„gra kĂ€llobjekt. Det Ă€r inte nödvĂ€ndigt att fullstĂ€ndigt tĂ€nka igenom (Ă€ven pĂ„ övergripande nivĂ„) hela objektmodellen för detta.
  • Datamodellen kan börja fungera (och ge fördelar) med bara 2-3 objekt, och sedan gradvis vĂ€xa (relaterat till Anchor-modellen anvĂ€nde Nikolaj en vacker jĂ€mförelse med mycel). De flesta förbĂ€ttringar, inklusive utvidgning av Ă€mnesomrĂ„det och tillĂ€gg av nya kĂ€llor
  • berör inte den befintliga funktionaliteten och innebĂ€r ingen risk att nĂ„got befintligt gĂ„r sönder. ĐœĐ” затрагОĐČаДт ŃŃƒŃ‰Đ”ŃŃ‚ĐČующоĐč Ń„ŃƒĐœĐșŃ†ĐžĐŸĐœĐ°Đ» Đž ĐœĐ” ĐČызыĐČаДт ĐŸĐżĐ°ŃĐœĐŸŃŃ‚ŃŒ ŃĐ»ĐŸĐŒĐ°Ń‚ŃŒ Ń‡Ń‚ĐŸ-Ń‚ĐŸ ужД Ń€Đ°Đ±ĐŸŃ‚Đ°ŃŽŃ‰Đ”Đ”.
  • Genom att dekomponera i standardkomponenter ser ETL-processer i sĂ„dana system likadana ut, deras skrivande kan algoritmiseras och i slutĂ€ndan, automatiseras.

Priset för denna flexibilitet Àr prestanda. Det betyder inte att det Àr omöjligt att uppnÄ acceptabel prestanda med sÄdana modeller. Oftast kan det bara krÀvas mer anstrÀngning och uppmÀrksamhet pÄ detaljer för att nÄ de önskade metrikerna.

Applikationer

Entitetstyper Data Vault

Översikt över flexibla metodologier för design av DWH

LĂ€s mer om Data Vault:
Dan Listedts webbplats
Allt om Data Vault pÄ ryska
Om Data Vault pÄ Habr

Entitetstyper oförÀndrad

Översikt över flexibla metodologier för design av DWH

LĂ€s mer om Anchor Model:

Webbplatsen för skaparna av Anchor Model
Artikel om erfarenheten av att implementera Anchor Model pÄ Avito

Sammanfattande tabell med gemensamma drag och skillnader mellan de granskade tillvÀgagÄngssÀtten:

Översikt över flexibla metodologier för design av DWH

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster