Snowflake Schema i Data Warehouse Model

⚡ Smart opsummering

Snefnugskema i datavarehusmodellering arrangerer normaliserede dimensionstabeller, der forgrener sig fra en central faktatabel og ligner en snefnug. Det udvider stjerneskemaet, reducerer dataredundans og organiserer hierarkier på tværs af flere relaterede opslagstabeller.

  • 🧩 Kernestruktur: En central faktatabel er forbundet med dimensionstabeller, der er normaliseret til yderligere underdimensions- og opslagstabeller.
  • ❄️ Normalisering: Opdeling af hver dimension i relaterede tabeller fjerner gentagne attributter og skubber hierarkier mod tredje normalform.
  • 🌟 Forhold til stjerneskema: Snefnugskemaet udvider stjerneskemaet ved at normalisere dets flade, denormaliserede dimensionstabeller.
  • 💾 Opbevaringsfordel: Mindre normaliserede opslagstabeller reducerer diskforbruget og eliminerer overflødige data, hvilket letter vedligeholdelsen.
  • 🔗 Forespørgselsafvejning: Flere tabeller betyder flere joinforbindelser, hvilket kan forsinke forespørgselsydeevnen og komplicere rapportering.
  • 🧭 Hvornår skal du bruge: Vælg den til store dimensioner med dybe hierarkier, hvor lagerbesparelser og dataintegritet er vigtigst.
  • 🪐 Relaterede skemaer: Design af galakser og stjernehobe bygger på stjerne- og snefnug-koncepter til mere komplekse modeller.

Snefnugskema i datalager med normaliserede dimensionstabeller, der forgrener sig fra en central faktatabel

Hvad er et snefnugskema?

A Snefnugskema i et data warehouse er en logisk opstilling af tabeller i en flerdimensionel database, hvis ER-diagram (entitetsrelationsdiagram) ligner formen af ​​en snefnug. Det er en dimensionel model hvor en central faktatabel linker til dimensionstabeller, og disse dimensionstabeller er yderligere opdelt i relaterede underdimensionstabeller.

Snefnugskemaet er en udvidelse af stjerneskemaet. Mens et stjerneskema holder hver dimension i en enkelt flad tabel, normaliserer snefnugskemaet disse dimensioner og opdeler gentagne grupper af data i yderligere opslagstabeller. Denne normalisering fjerner redundans og skaber den forgrenende, hierarkiske struktur, der giver skemaet sit navn.

Eksempel på snefnugskema

I det følgende eksempel på et snefnugskema sidder en tabel med salgsfakta i midten, omgivet af dimensioner som Produkt, Dato og Butik. I stedet for at gemme alle attributter i én dimensionstabel, normaliseres geografioplysningerne, så Land flyttes til sin egen separate tabel.

Eksempel på et snefnugskema med en central faktatabel og en normaliseret landedimensionstabel
Eksempel på snefnugskema

Her refererer dimensionen Store til en tabel City, tabellen City refererer til en tabel State, og tabellen State refererer til en tabel Country. Hver værdi gemmes kun én gang og er forbundet med en fremmednøgle, så et landsnavn gentages aldrig på tværs af millioner af rækker. Denne lagdelte normalisering er det, der adskiller et snefnugskema fra et fladt stjerneskema.

Karakteristika for Snowflake Schema

Snefnugskemaet har flere definerende karakteristika:

  • Den bruger mindre diskplads, fordi normaliserede dimensionstabeller undgår at gemme gentagne værdier.
  • Nye dimensioner kan tilføjes til skemaet med relativt lille indsats.
  • Forespørgselsydeevnen kan falde, fordi hentning af data kræver sammenføjning af mange tabeller.
  • Det kræver mere vedligeholdelsesindsats, da et større antal opslagstabeller skal administreres.

Sådan designer du et snefnugskema

Design af et snefnugskema starter på samme måde som enhver dimensionel model og tilføjer derefter et normaliseringstrin. Målet er at identificere den forretningsproces, du vil analysere, modellere den først som et stjerneskema og derefter normalisere de dimensioner, der indeholder dybe hierarkier. Arbejd dig gennem følgende trin:

  1. Identificer forretningsprocessen og kornet. Beslut, hvad en enkelt række i faktatabellen repræsenterer, f.eks. én salgstransaktion, og definer de numeriske målinger eller fakta, du skal rapportere om.
  2. Byg den centrale faktatabel. Læg de numeriske mål sammen med de fremmednøgler, der peger på hver dimension; sammen danner disse fremmednøgler normalt den sammensatte primærnøgle.
  3. Definer dimensionstabellerne. Opret én tabel for hver beskrivende dimension, f.eks. Produkt, Kunde, Dato og Butik, og tildel hver af dem en surrogatprimærnøgle.
  4. Normaliser hierarkierne. Opdel alle dimensioner, der indeholder gentagne attributter, i underdimensionstabeller, for eksempel ved at flytte Kategori ud af Produkt eller By, Stat og Land ud af en Butiksdimension.
  5. Forbind tabellerne med fremmednøgler. Forbind hver underdimension tilbage til dens overordnede tabel, så grenene danner klare en-til-mange-hierarkier, der ligner en snefnug.
  6. Valider og test med forespørgsler. Kør repræsentative rapporteringsforespørgsler for at bekræfte, at joinforbindelserne returnerer korrekte resultater, og at den samlede ydeevne forbliver acceptabel.

Da designet normaliserer data mod tredje normalform, skal join-stierne dokumenteres tydeligt, så analytikere forstår, hvordan de skal navigere i hver gren. Når strukturen er defineret, er det værd at afveje skemaets fordele mod dets omkostninger.

Fordele ved Snowflake Schema

Snefnugskemaet tilbyder en række fordele:

  • Dens primære fordel er reduceret disklagring, fordi sammenføjning af mindre normaliserede opslagstabeller undgår duplikering af dimensionsdata.
  • Det giver større skalerbarhed i forholdet mellem komponenter og dimensionsniveauer.
  • Det fjerner redundans, hvilket forbedrer dataintegriteten og gør modellen nemmere at vedligeholde.
  • En beskrivende attribut opdateres kun ét sted, hvilket mindsker risikoen for inkonsistente data.

Ulemper ved Snowflake Schema

Designet kommer også med kompromiser, der skal overvejes:

  • Den normaliserede struktur øger den vedligeholdelse, der kræves for at administrere mange relaterede tabeller.
  • Komplekse forespørgsler, der spænder over flere joins, kan være vanskelige at skrive og forstå.
  • Et større antal tabeller betyder flere joinforbindelser, hvilket forlænger forespørgselsudførelsestiden.
  • Forretningsbrugere finder ofte forgreningsmodellen sværere at navigere i end et simpelt stjerneskema.

Snefnugskema vs. Stjerneskema

Snefnugskemaet og stjerneskema er de to mest almindelige flerdimensionelle designs inden for data warehousing, og den vigtigste forskel mellem dem er normalisering. Et stjerneskema holder hver dimension i en enkelt flad, denormaliseret tabel for maksimal forespørgselshastighed, hvorimod et snefnugskema normaliserer disse dimensioner i flere relaterede tabeller for at spare lagerplads og beskytte dataintegriteten. På grund af dette passer de to skemaer til forskellige prioriteter.

AspectStjerneskemaSnefnugskema
DimensionstabellerDenormaliseret, én tabel pr. dimensionNormaliseret til underdimensionstabeller
OpbevaringBruger mere plads på grund af redundansBruger mindre plads, ingen redundans
ForespørgselsydelseHurtigere, færre tilslutningerLangsommere, flere tilslutninger
ForespørgselskompleksitetEnkel at skriveMere komplekst
Bedste velegnet tilHurtig rapportering og BIStore, hierarkiske dimensioner

Kort sagt, vælg et stjerneskema, når forespørgselshastighed og enkel rapportering er vigtigst, og vælg et snefnugskema, når lagereffektivitet, rene hierarkier og lav dataredundans er prioriteret. Mange rigtige lagre kombinerer begge mønstre afhængigt af størrelsen og dybden af ​​hver dimension.

Hvornår skal man bruge et snefnugskema

Et snefnugskema er ikke altid det rigtige valg, så det hjælper at matche designet til arbejdsbyrden og rapporteringsbehovene. Det fungerer typisk bedst i følgende situationer:

  • Dimensioner er meget store og indeholder mange gentagne attributter, der spilder lagerplads, når de denormaliseres.
  • Dimensioner har dybe, veldefinerede hierarkier, f.eks. Region til land til stat til by, der naturligt knyttes til separate tabeller.
  • Dataintegritet og konsistens er vigtigere for projektet end hastigheden af ​​rå forespørgsler.
  • Lageromkostninger er en reel bekymring, og diskbesparelserne på tværs af tabeller med store dimensioner er betydelige.
  • Modellen feeder OLAP værktøjer, der effektivt kan navigere i normaliserede hierarkier.

Omvendt, når hurtig og enkel rapportering for forretningsanalytikere er prioriteten, er et stjerneskema eller et hybridt stjerneklyngedesign normalt det bedste valg. data warehouse arkitekturer bevidst blande begge tilgange for at balancere hastighed og lagring.

Hvad er et Galaxy Schema?

A Galaxy-skema indeholder to eller flere faktatabeller, der deler dimensionstabeller mellem sig. Det kaldes også et faktakonstellationsskema, og fordi det kan ses som en samling af stjerner, får det navnet galakseskema.

Eksempel på et galakseskema med to faktatabeller, der deler konforme dimensionstabeller
Eksempel på Galaxy Schema

Som du kan se i eksemplet ovenfor, er der to faktatabeller:

  1. Revenue
  2. Produkt

I et galakseskema kaldes de dimensioner, der deles mellem faktatabellerne, konformede dimensioner.

Karakteristika for Galaxy Schema

Galakseskemaet har følgende karakteristika:

  • Dimensionerne er opdelt i forskellige dimensioner baseret på de forskellige niveauer i hierarkiet.
  • For eksempel, hvis geografi har fire hierarkiniveauer - region, land, stat og by - så bør galakseskemaet have fire dimensioner.
  • Det er muligt at opbygge denne type skema ved at opdele et enkelt stjerneskema i flere stjerneskemaer.
  • Dimensionerne i dette skema er store og skal bygges i henhold til hierarkiets niveauer.
  • Skemaet er nyttigt til at aggregere faktatabeller for at understøtte bedre analyse og forståelse.

Hvad er Star Cluster Skema?

Et snefnugskema indeholder fuldt udvidede hierarkier, hvilket kan øge kompleksiteten og kræve ekstra joins. Et stjerneskema indeholder derimod fuldt kollapsede hierarkier, hvilket kan føre til redundans. Den bedste løsning er ofte en balance mellem disse to designs, kendt som et stjerneskema. Cluster Skema.

Eksempel på et stjernehobeskema, der balancerer stjerne- og snefnugdesign
Eksempel på stjerne Cluster Planlæg

overlapping Dimensioner vises som forgreninger i hierarkierne. En forgrening sker, når en enhed fungerer som en forælder i to forskellige dimensionelle hierarkier. Disse forgreningsenheder identificeres derefter som klassifikationer med en-til-mange-relationer, hvilket begrænser antallet af ekstra tabeller, designet opretter.

Ofte Stillede Spørgsmål

Skemaet får sit navn, fordi dets entitetsrelationsdiagram forgrener sig udad som en snefnug. Normalisering af hver dimension i underdimensioner og opslagstabeller skaber flere forbundne niveauer, der udstråler fra den centrale faktatabel og danner en form, der ligner en snefnugkrystal.

Normalisering opdeler en dimensionstabel i mindre relaterede tabeller for at fjerne gentagne data. I et snefnugskema flyttes attributter som kategori eller land til deres egne tabeller og når typisk tredje normalform, hvilket reducerer redundans og holder hver værdi gemt kun én gang.

En faktatabel gemmer målbare, numeriske forretningshændelser, såsom salgsbeløb, plus fremmednøgler til dimensioner. En dimensionstabel gemmer beskrivende attributter, såsom produktnavn eller region, der giver disse fakta kontekst. Faktatabeller er normalt langt større end dimensionstabeller.

En underdimension, undertiden kaldet en outrigger-tabel, er en normaliseret tabel, der forgrener sig fra en hoveddimension. For eksempel kan en produktdimension linke til en separat kategoritabel. Disse ekstra tabeller skaber snefnugs karakteristiske flerniveauhierarki.

Ja. Mange lagre blander begge mønstre og normaliserer kun de store dimensioner, der drager fordel af det, mens de holderping mindre dimensioner flade. Denne hybrid, undertiden kaldet et stjernehobeskema, balancerer forespørgselshastigheden for et stjerneskema med lagerbesparelserne i et snefnugskema.

Ja. Et snefnugskema feeds OLAP systemer godt, fordi dens normaliserede hierarkier knyttes tydeligt til drill-down-niveauer såsom land, stat og by. De ekstra joins kan dog forsinke kubebehandling, så meget forespørgselstunge OLAP-arbejdsbelastninger favoriserer nogle gange et stjerneskema.

AI-assistenter kan foreslå, hvilke dimensioner der skal normaliseres, generere tabelstrukturer ud fra en forretningsbeskrivelse og anbefale indeks eller join-stier, der forbedrer ydeevnen. De kan også registrere redundans og inkonsistente nøgler, selvom en dataingeniør bør gennemgå hver anbefaling, før den anvendes.

Ja. ChatGPT og GitHub Copilot kan udarbejde CREATE TABLE-sætninger og join-forespørgsler til et snowflake-skema fra en kort prompt. Gennemgå altid de genererede nøgler, datatyper og relationer, før du kører dem i produktion.

Opsummer dette indlæg med: