Snowflake Schema i Data Warehouse Model

โšก Smart sammanfattning

Snรถflingescheman i datalagermodellering arrangerar normaliserade dimensionstabeller som fรถrgrenar sig frรฅn en central faktatabell, och liknar en snรถflinga. Det utรถkar stjรคrnschemat, minskar dataredundans och organiserar hierarkier รถver flera relaterade uppslagstabeller.

  • ๐Ÿงฉ Kรคrnstruktur: En central faktatabell ansluter till dimensionstabeller som รคr normaliserade till ytterligare underdimensions- och uppslagstabeller.
  • โ„๏ธ Normalisering: Att dela upp varje dimension i relaterade tabeller tar bort upprepade attribut och flyttar hierarkier mot tredje normalform.
  • ๐ŸŒŸ Relation till stjรคrnschema: Snรถflingeschemat utรถkar stjรคrnschemat genom att normalisera dess platta, denormaliserade dimensionstabeller.
  • ๐Ÿ’พ Fรถrvaringsfรถrdel: Mindre normaliserade uppslagstabeller minskar diskanvรคndningen och eliminerar redundant data, vilket underlรคttar underhรฅllet.
  • ๐Ÿ”— Avvรคgning fรถr frรฅgefrรฅgor: Fler tabeller innebรคr fler kopplingar, vilket kan sรคnka frรฅgeprestanda och komplicera rapporteringen.
  • ๐Ÿงญ Nรคr du ska anvรคnda: Vรคlj den fรถr stora dimensioner med djupa hierarkier dรคr lagringsbesparingar och dataintegritet รคr viktigast.
  • ๐Ÿช Relaterade scheman: Galax- och stjรคrnhopdesign bygger pรฅ stjรคrn- och snรถflingekoncept fรถr mer komplexa modeller.

Snรถflingeschema i datalager med normaliserade dimensionstabeller som fรถrgrenar sig frรฅn en central faktatabell

Vad รคr ett Snowflake Schema?

A Snรถflingaschema i ett datalager รคr en logisk uppstรคllning av tabeller i en flerdimensionell databas vars ER-diagram (entitetsrelationsdiagram) liknar formen av en snรถflinga. Det รคr en dimensionell modell dรคr en central faktatabell lรคnkar till dimensionstabeller, och dessa dimensionstabeller รคr vidare indelade i relaterade underdimensionstabeller.

Snรถflingeschemat รคr en utvidgning av stjรคrnschemat. Medan ett stjรคrnschema hรฅller varje dimension i en enda platt tabell, normaliserar snรถflingeschemat dessa dimensioner och delar upp upprepade datagrupper i ytterligare uppslagstabeller. Denna normalisering tar bort redundans och skapar den fรถrgrenande, hierarkiska struktur som ger schemat dess namn.

Exempel pรฅ snรถflingaschema

I fรถljande exempel pรฅ snรถflingeschemat sitter en fรถrsรคljningsfaktatabell i mitten, omgiven av dimensioner som Produkt, Datum och Butik. Istรคllet fรถr att lagra varje attribut i en dimensionstabell normaliseras den geografiska informationen sรฅ att Land flyttas till en egen separat tabell.

Exempel pรฅ ett snรถflingeschema med en central faktatabell och en normaliserad landsdimensionstabell
Exempel pรฅ Snowflake Schema

Hรคr refererar dimensionen Store till en tabell รถver stad, tabellen รถver stad refererar till en tabell รถver delstater och tabellen รถver delstater till en tabell รถver land. Varje vรคrde lagras endast en gรฅng och lรคnkas av en frรคmmande nyckel, sรฅ ett landsnamn upprepas aldrig รถver miljontals rader. Denna lagerbaserade normalisering รคr det som skiljer ett snรถflingeschema frรฅn ett platt stjรคrnschema.

Egenskaper fรถr Snowflake Schema

Snรถflingeschemat har flera definierande egenskaper:

  • Den anvรคnder mindre diskutrymme, eftersom normaliserade dimensionstabeller undviker att lagra upprepade vรคrden.
  • Nya dimensioner kan lรคggas till i schemat med relativt liten anstrรคngning.
  • Frรฅgeprestanda kan fรถrsรคmras eftersom hรคmtning av data krรคver att mรฅnga tabeller kopplas samman.
  • Det krรคver mer underhรฅllsinsatser, eftersom ett stรถrre antal uppslagstabeller mรฅste hanteras.

Hur man utformar ett snรถflingeschema

Att utforma ett snรถflingeschema bรถrjar pรฅ samma sรคtt som vilken dimensionell modell som helst och lรคgger sedan till ett normaliseringssteg. Mรฅlet รคr att identifiera den affรคrsprocess du vill analysera, modellera den fรถrst som ett stjรคrnschema och sedan normalisera de dimensioner som innehรฅller djupa hierarkier. Arbeta dig igenom fรถljande steg:

  1. Identifiera affรคrsprocessen och spannmรฅlen. Bestรคm vad en enskild rad i faktatabellen representerar, till exempel en fรถrsรคljningstransaktion, och definiera de numeriska mรฅtt, eller fakta, som du behรถver rapportera om.
  2. Bygg den centrala faktatabellen. Lรคgg till de numeriska mรฅtten tillsammans med de frรคmmande nycklar som pekar pรฅ varje dimension; tillsammans bildar dessa frรคmmande nycklar vanligtvis den sammansatta primรคrnyckeln.
  3. Definiera dimensionstabellerna. Skapa en tabell fรถr varje beskrivande dimension, till exempel Produkt, Kund, Datum och Butik, och tilldela varje dimension en surrogatprimรคrnyckel.
  4. Normalisera hierarkierna. Dela upp varje dimension som innehรฅller upprepade attribut i underdimensionstabeller, till exempel flytta kategori frรฅn produkt, eller stad, delstat och land frรฅn en butiksdimension.
  5. Koppla ihop tabellerna med frรคmmande nycklar. Lรคnka varje underdimension tillbaka till dess รถverordnade tabell sรฅ att grenarna bildar tydliga en-till-mรฅnga-hierarkier som liknar en snรถflinga.
  6. Validera och testa med frรฅgor. Kรถr representativa rapporteringsfrรฅgor fรถr att bekrรคfta att kopplingarna returnerar korrekta resultat och att den totala prestandan fรถrblir acceptabel.

Eftersom designen normaliserar data mot tredje normalform, dokumentera kopplingsvรคgarna tydligt sรฅ att analytiker fรถrstรฅr hur man navigerar i varje gren. Med strukturen definierad รคr det vรคrt att vรคga schemats fรถrdelar mot dess kostnader.

Fรถrdelar med snรถflingeschema

Snรถflingeschemat erbjuder ett antal fรถrdelar:

  • Dess frรคmsta fรถrdel รคr minskad disklagring, eftersom sammankoppling av mindre normaliserade uppslagstabeller undviker duplicerade dimensionsdata.
  • Det ger stรถrre skalbarhet i relationerna mellan komponenter och dimensionsnivรฅer.
  • Det tar bort redundans, vilket fรถrbรคttrar dataintegriteten och gรถr modellen enklare att underhรฅlla.
  • Ett beskrivande attribut uppdateras endast pรฅ ett stรคlle, vilket minskar risken fรถr inkonsekventa data.

Nackdelar med snรถflingeschema

Designen har ocksรฅ avvรคgningar att ta hรคnsyn till:

  • Den normaliserade strukturen รถkar det underhรฅll som krรคvs fรถr att hantera mรฅnga relaterade tabeller.
  • Komplexa frรฅgor som strรคcker sig รถver flera kopplingar kan vara svรฅra att skriva och fรถrstรฅ.
  • Ett stรถrre antal tabeller innebรคr fler kopplingar, vilket fรถrlรคnger kรถrningstiden fรถr frรฅgor.
  • Affรคrsanvรคndare tycker ofta att fรถrgreningsmodellen รคr svรฅrare att navigera รคn ett enkelt stjรคrnschema.

Snรถflingeschema vs. stjรคrnschema

Snรถflingeschemat och stjรคrnschema รคr de tvรฅ vanligaste flerdimensionella designerna inom datalager, och den viktigaste skillnaden mellan dem รคr normalisering. Ett stjรคrnschema hรฅller varje dimension i en enda platt, denormaliserad tabell fรถr maximal frรฅgehastighet, medan ett snรถflingeschema normaliserar dessa dimensioner till flera relaterade tabeller fรถr att spara lagring och skydda dataintegriteten. Pรฅ grund av detta passar de tvรฅ scheman olika prioriteringar.

AspectStjรคrnskemaSnรถflingaschema
MรฅtttabellerAvnormaliserad, en tabell per dimensionNormaliserad till underdimensionstabeller
lagringAnvรคnder mer utrymme pรฅ grund av redundansAnvรคnder mindre utrymme, ingen redundans
FrรฅgeprestandaSnabbare, fรคrre anslutningarLรฅngsammare, fler anslutningar
FrรฅgekomplexitetEnkelt att skrivaMer komplex
Bรคst lรคmpad fรถrSnabb rapportering och BIStora, hierarkiska dimensioner

Kort sagt, vรคlj ett stjรคrnschema nรคr frรฅgehastighet och enkel rapportering รคr viktigast, och vรคlj ett snรถflingeschema nรคr lagringseffektivitet, rena hierarkier och lรฅg dataredundans รคr prioriterat. Mรฅnga riktiga lager kombinerar bรฅda mรถnstren beroende pรฅ storleken och djupet fรถr varje dimension.

Nรคr man ska anvรคnda ett snรถflingeschema

Ett snรถflingeschema รคr inte alltid rรคtt val, sรฅ det รคr bra att matcha designen med arbetsbelastningen och rapporteringsbehoven. Det brukar fungera bรคst i fรถljande situationer:

  • Dimensioner รคr mycket stora och innehรฅller mรฅnga upprepade attribut som slรถsar lagringsutrymme nรคr de avnormaliseras.
  • Dimensioner har djupa, vรคldefinierade hierarkier, till exempel Region till Land till Delstat till Stad, som mappas naturligt till separata tabeller.
  • Dataintegritet och konsekvens รคr viktigare fรถr projektet รคn hastigheten pรฅ rรฅa frรฅgor.
  • Lagringskostnader รคr ett verkligt problem och diskbesparingarna รถver tabeller med stora dimensioner รคr betydande.
  • Modellflรถdena OLAP verktyg som effektivt kan navigera i normaliserade hierarkier.

Omvรคnt, nรคr snabb och enkel rapportering fรถr affรคrsanalytiker รคr prioriterad, รคr ett stjรคrnschema eller en hybrid stjรคrnklusterdesign vanligtvis den bรคsta lรถsningen. datalagerarkitekturer medvetet blanda bรฅda metoderna fรถr att balansera hastighet och lagring.

Vad รคr ett Galaxy Schema?

A Galaxy Schema innehรฅller tvรฅ eller flera faktatabeller som delar dimensionstabeller mellan sig. Det kallas ocksรฅ ett faktakonstellationsschema, och eftersom det kan ses som en samling stjรคrnor fรฅr det namnet galaxschema.

Exempel pรฅ ett galaxschema med tvรฅ faktatabeller som delar konforma dimensionstabeller
Exempel pรฅ Galaxy Schema

Som du kan se i exemplet ovan finns det tvรฅ faktatabeller:

  1. Intรคkter
  2. Produkter

I ett galaxschema kallas de dimensioner som delas mellan faktatabellerna fรถr konformade dimensioner.

Egenskaper fรถr Galaxy Schema

Galaxschemat har fรถljande egenskaper:

  • Dimensionerna รคr uppdelade i distinkta dimensioner baserat pรฅ de olika nivรฅerna i hierarkin.
  • Om till exempel geografi har fyra hierarkinivรฅer โ€“ region, land, delstat och stad โ€“ bรถr galaxschemat ha fyra dimensioner.
  • Det รคr mรถjligt att bygga den hรคr typen av schema genom att dela upp ett enskilt stjรคrnschema i fler stjรคrnscheman.
  • Dimensionerna i detta schema รคr stora och mรฅste byggas enligt hierarkinens nivรฅer.
  • Schemat รคr anvรคndbart fรถr att aggregera faktatabeller fรถr att stรถdja bรคttre analys och fรถrstรฅelse.

Vad รคr Star Cluster Schema?

Ett snรถflingeschema innehรฅller helt expanderade hierarkier, vilket kan รถka komplexiteten och krรคva extra kopplingar. Ett stjรคrnschema, รฅ andra sidan, innehรฅller helt hopfรคllda hierarkier, vilket kan leda till redundans. Den bรคsta lรถsningen รคr ofta en balans mellan dessa tvรฅ designer, sรฅ kallad stjรคrnschema. Cluster Schema.

Exempel pรฅ ett stjรคrnhopschema som balanserar stjรคrn- och snรถflingedesigner
Exempel pรฅ Star Cluster Schema

รถverlappningping Dimensioner visas som gafflar i hierarkierna. En gaffel intrรคffar nรคr en entitet fungerar som fรถrรคlder i tvรฅ olika dimensionella hierarkier. Dessa gaffelentiteter identifieras sedan som klassificeringar med en-till-mรฅnga-relationer, vilket begrรคnsar antalet extra tabeller som designen skapar.

Vanliga frรฅgor

Schemat har fรฅtt sitt namn eftersom dess entitetsrelationsdiagram fรถrgrenar sig utรฅt likt en snรถflinga. Genom att normalisera varje dimension till underdimensioner och uppslagstabeller skapas flera sammankopplade nivรฅer som strรฅlar ut frรฅn den centrala faktatabellen och bildar en form som liknar en snรถflingekristall.

Normalisering delar upp en dimensionstabell i mindre relaterade tabeller fรถr att ta bort upprepade data. I ett snรถflingeschema flyttas attribut som kategori eller land till sina egna tabeller och nรฅr vanligtvis tredje normalformen, vilket minskar redundansen och hรฅller varje vรคrde lagrat endast en gรฅng.

En faktatabell lagrar mรคtbara, numeriska affรคrshรคndelser, sรฅsom fรถrsรคljningsbelopp, plus frรคmmande nycklar till dimensioner. En dimensionstabell lagrar beskrivande attribut, sรฅsom produktnamn eller region, som ger dessa fakta sammanhang. Faktatabeller รคr vanligtvis mycket stรถrre รคn dimensionstabeller.

En underdimension, ibland kallad en utriggertabell, รคr en normaliserad tabell som fรถrgrenar sig frรฅn en huvuddimension. Till exempel kan en produktdimension lรคnka till en separat kategoritabell. Dessa extra tabeller skapar snรถflingans karakteristiska flernivรฅhierarki.

Ja. Mรฅnga lager blandar bรฅda mรถnstren och normaliserar endast de stora dimensioner som gynnas av det medan de hรฅllerping mindre dimensioner platt. Denna hybrid, ibland kallad ett stjรคrnklusterschema, balanserar frรฅgehastigheten fรถr ett stjรคrnschema med lagringsbesparingarna fรถr ett snรถflingeschema.

Ja. Ett snรถflingeschema matar OLAP system bra eftersom dess normaliserade hierarkier mappas tydligt till detaljnivรฅer som land, delstat och stad. De extra kopplingarna kan dock bromsa kubbearbetningen, sรฅ mycket frรฅgetunga OLAP-arbetsbelastningar gynnar ibland ett stjรคrnschema.

AI-assistenter kan fรถreslรฅ vilka dimensioner som ska normaliseras, generera tabellstrukturer frรฅn en affรคrsbeskrivning och rekommendera index eller kopplingsvรคgar som fรถrbรคttrar prestandan. De kan ocksรฅ upptรคcka redundans och inkonsekventa nycklar, รคven om en dataingenjรถr bรถr granska varje rekommendation innan den tillรคmpas.

Ja. ChatGPT och GitHub Copilot kan utarbeta CREATE TABLE-satser och koppla frรฅgor fรถr ett snowflake-schema frรฅn en kort prompt. Granska alltid de genererade nycklarna, datatyperna och relationerna innan du kรถr dem i produktion.

Sammanfatta detta inlรคgg med: