Schema de Snowflake vs. Schema Star

Atunci când alegeți o schemă de bază de date pentru un depozit de date, fulg de nea și stele schema tind să fie alegeri populare. Această comparație discută despre adecvarea schemelor stea / vânt de zăpadă în diferite scenarii și caracteristicile acestora.

Diagramă de comparație

Snowflake Schema comparativ cu schema de comparație Star Schema
Schema de SnowflakeStar Schema
Ușurința de întreținere / schimbare Nici o redundanță, așa că schemele de zăpadă sunt mai ușor de întreținut și de schimbat. Are date redundante și, prin urmare, este mai ușor de întreținut / schimbat
Usor de folosit Interogări mai complexe și, prin urmare, mai puțin ușor de înțeles Scăderea complexității interogării și ușor de înțeles
Interogare performanță Mai multe chei străine și, prin urmare, timpul de executare a interogării mai lung (mai lent) Numărul redus de chei externe și, prin urmare, timpul de executare a interogării mai scurt (mai rapid)
Tipul de Datawarehouse Bine de utilizat pentru core de datewarehouse pentru a simplifica relațiile complexe (multe: multe) Bun pentru datamart cu relații simple (1: 1 sau 1: multe)
se alătură Numărul mai mare de conexiuni Mai puțin se alătură
Tabel de dimensiuni O schemă de fulg de zăpadă poate avea mai mult de o tabelă de dimensiuni pentru fiecare dimensiune. O schemă stea conține numai o singură dimensiune pentru fiecare dimensiune.
Când să utilizați Atunci când tabelul de dimensiuni este relativ mare în dimensiune, fulgii de zăpadă sunt mai bune pe măsură ce diminuează spațiul. Atunci când tabelul de dimensiuni conține un număr mai mic de rânduri, putem alege schema Star.
Normalizare / De-normalizare Tabelele de dimensiuni sunt în formă normalizată, dar tabelul de fapte este în formă de-normalizată Ambele tabele de dimensiuni și fapte sunt în formă de-normalizată
Model de date Abordarea de jos în sus Abordarea de sus în jos

Cuprins: schema de zăpadă vs schema Star

  • 1 Exemple
    • Exemplu de schemă stea 1.1
    • 1.2 Exemplu de schemă de zăpadă
  • 2 Referințe

Exemple

Luați în considerare o bază de date pentru un comerciant cu amănuntul care are numeroase magazine, fiecare magazin vânzând multe produse în mai multe categorii de produse și din diferite branduri. Un depozit de date sau un centru de date pentru un astfel de comerciant ar trebui să ofere analiștilor posibilitatea de a rula rapoarte de vânzări grupate după magazin, dată (sau lună, trimestru sau an) sau categoria de produs sau marca.

Exemplu de schemă stea

Dacă această bază de date utilizează o schemă stea, ar arăta după cum urmează:

Exemplu de schemă Star

Tabelul de facturi ar fi o înregistrare a tranzacțiilor de vânzare, în timp ce există tabele de dimensiuni pentru dată, magazin și produs. Tabelele de dimensiuni sunt conectate fiecare la tabelul facturilor prin cheia lor primară, care este o cheie străină pentru tabelul de fapte. De exemplu, în loc să se stocheze data efectivă a tranzacției într-un rând din tabelul fact, data_id este stocată. Această dată_id corespunde unui rând unic din tabelul Dim_Date, iar acel rând stochează și alte atribute ale datei necesare pentru gruparea în rapoarte. de exemplu, ziua din săptămână, luna, trimestrul anului și așa mai departe. Datele sunt denormalizate pentru o raportare mai ușoară.

Iata cum se obtine un raport despre numarul de televizoare vandute dupa marci si pe tari cu ajutorul conexiunilor interioare.

Exemplul Schemei de Snowflake

Același scenariu poate folosi și o schemă de fulgi de zăpadă, caz în care ar fi structurată după cum urmează:

Snowflake exemplu schema (click pentru marire)

Principala diferență, în comparație cu schema stea, este aceea că datele din tabelele de dimensiuni sunt mai normalizate. De exemplu, în loc de a stoca luna, trimestrul și ziua săptămânii în fiecare rând din tabelul Dim_Date, acestea sunt detaliate în tabelele lor de dimensiuni. În mod similar pentru tabelul Dim_Store, statul și țara sunt atribute geografice care sunt eliminate într-un pas - în loc să fie stocate în tabelul Dim_Store, acestea sunt acum stocate într-o tabelă separată Dim_Geography.

Același raport - numărul de televizoare vândute pe țări și pe mărci - este acum un pic mai complicat decât într-o schemă stea:

Interogare SQL pentru a obține numărul de produse vândute în funcție de țară și de brand, atunci când baza de date utilizează o schemă de fulgi de zăpadă.

Referințe

  • wikipedia: Snowflake_schema
  • wikipedia: Star_schema