Snowflake Schema vs. Star Schema

Når du vælger et databaseskema til et datavarehus, snefnug og stjerneskemaer har tendens til at være populære valg. Denne sammenligning diskuterer egnetheden af ​​stjerne vs. snefnugskemaer i forskellige scenarier og deres egenskaber.

Sammenligningstabel

Snowflake-skema kontra stjerneskema-sammenligningstabel
Snowflake-skemaStjerneskema
Nem vedligeholdelse / ændring Ingen redundans, så snefnugskemaer er lettere at vedligeholde og ændre. Har overflødige data og dermed mindre let at vedligeholde / ændre
Brugervenlighed Mere komplekse forespørgsler og dermed mindre let at forstå Lavere forespørgselskompleksitet og let at forstå
Forespørgselsydelse Flere udenlandske nøgler og dermed længere udførelsestid for forespørgsel (langsommere) Mindre antal udenlandske nøgler og dermed kortere udførelsestid for forespørgsel (hurtigere)
Type datawarehouse God at bruge til datawarehouse-kerne til at forenkle komplekse forhold (mange: mange) God til datamart med enkle forhold (1: 1 eller 1: mange)
Sammenføjninger Højere antal sammenføjninger Færre slutter sig til
Dimensionstabel Et snefnugsskema kan have mere end en dimensionstabel for hver dimension. Et stjerneskema indeholder kun en enkelt dimensionstabel for hver dimension.
Hvornår skal bruges Når dimensionstabellen er relativt stor i størrelse, er snefnugning bedre, da det reducerer pladsen. Når dimensionstabel indeholder mindre antal rækker, kan vi vælge Stjerneskema.
Normalisering / De-Normalisering Dimensionstabeller er i normaliseret form, men faktabord er i de-normaliseret form Både dimensioner og fakta tabeller er i de-normaliseret form
Datamodel Bund-up tilgang Top-down-tilgang

Indhold: Snowflake Schema vs Star Schema

  • 1 eksempler
    • 1.1 Stjerneskemaeksempel
    • 1.2 Eksempel på snefnugsskema
  • 2 Henvisninger

eksempler

Overvej en database til en forhandler, der har mange butikker, hvor hver butik sælger mange produkter i mange produktkategorier og af forskellige mærker. Et datavarehus eller en datamart for en sådan detailhandler ville have behov for at give analytikere muligheden for at køre salgsrapporter grupperet efter butik, dato (eller måned, kvartal eller år), eller produktkategori eller brand.

Eksempel på stjerneskema

Hvis denne datamart brugte et stjerneskema, ville det se ud som følger:

Eksempel på et stjerneskema

Faktatabellen ville være en oversigt over salgstransaktioner, mens der er dimensionstabeller for dato, butik og produkt. Dimensionstabeller er hver tilsluttet faktatabellen via deres primære nøgle, som er en fremmed nøgle til faktabordet. I stedet for at gemme den faktiske transaktionsdato i en række i faktabordet gemmes f.eks. Date_id. Denne dato_id svarer til en unik række i tabellen Dim_Date, og den række gemmer også andre attributter for den dato, der kræves til gruppering i rapporter. f.eks. ugedag, måned, kvartal af året osv. Dataene er denormaliserede for lettere rapportering.

Sådan får man en rapport om antallet af fjernsyn, der sælges efter mærke og efter land ved hjælp af indre sammenføjninger.

Snowflake-skemaeksempel

Det samme scenarie kan også bruge et snefnugsskema, i hvilket tilfælde det ville være struktureret som følger:

Snowflake-skemaeksempel (klik for at forstørre)

Den største forskel sammenlignet med stjerneskemaet er, at data i dimensionstabeller er mere normaliserede. I stedet for at gemme måned, kvartal og ugedag i hver række i Dim_Date-tabellen, er disse for eksempel opdelt i deres egne dimensionstabeller. Tilsvarende for Dim_Store-tabellen er staten og landet geografiske attributter, der er fjernet ét trin - i stedet for at blive gemt i Dim_Store-tabellen, gemmes de nu i en separat Dim_Geography-tabel.

Den samme rapport - antallet af fjernsyn, der sælges efter land og efter mærke - er nu lidt mere kompliceret end i et stjerneskema:

SQL-forespørgsel for at få antallet af produkter, der sælges efter land og mærke, når databasen bruger et snowflake-skema.

Referencer

  • wikipedia: Snowflake_schema
  • wikipedia: Star_schema