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.
Schema de Snowflake | Star 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 |
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.
Dacă această bază de date utilizează o schemă stea, ar arăta după cum urmează:
Exemplu de schemă StarTabelul 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.
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ă.