Schema Snowflake contro schema a stella

Quando si sceglie uno schema di database per un data warehouse, fiocco di neve e schemi di stelle tendono ad essere scelte popolari. Questo confronto discute l'idoneità degli schemi stella contro fiocco di neve in diversi scenari e le loro caratteristiche.

Grafico comparativo

Schema del fiocco di neve contro il grafico di confronto dello schema a stelle
Schema SnowflakeSchema di stelle
Facilità di manutenzione / cambiamento Nessuna ridondanza, quindi gli schemi a fiocco di neve sono più facili da mantenere e modificare. Ha dati ridondanti e quindi meno facile da mantenere / cambiare
Facilità d'uso Domande più complesse e quindi meno facili da capire Minore complessità delle query e facile comprensione
Prestazioni di query Più chiavi esterne e quindi tempi di esecuzione delle query più lunghi (più lenti) Minor numero di chiavi esterne e quindi tempi di esecuzione delle query più brevi (più veloce)
Tipo di Datawarehouse Utile da utilizzare per il core datawarehouse per semplificare le relazioni complesse (molte: molte) Buono per i datamarts con relazioni semplici (1: 1 o 1: molti)
Si unisce Più alto numero di join Meno iscritti
Tabella delle dimensioni Uno schema fiocco di neve può avere più di una tabella di dimensioni per ogni dimensione. Uno schema a stella contiene solo una tabella a dimensione singola per ogni dimensione.
Quando usare Quando la tabella delle dimensioni è di dimensioni relativamente grandi, lo snowflaking è migliore in quanto riduce lo spazio. Quando la tabella delle dimensioni contiene un numero inferiore di righe, possiamo scegliere lo schema a stella.
Normalizzazione / De-normalizzazione Le tabelle di dimensione sono in forma normalizzata ma la tabella dei fatti è in forma de-normalizzata Entrambe le tabelle Dimension e Fact sono in forma De-Normalized
Modello di dati Approccio dal basso verso l'alto Approccio dall 'alto verso il basso

Contenuto: schema Snowflake vs schema a stella

  • 1 esempi
    • 1.1 Esempio di schema a stella
    • 1.2 Esempio di schema Snowflake
  • 2 riferimenti

Esempi

Si consideri un database per un rivenditore che ha molti negozi, con ogni negozio che vende molti prodotti in molte categorie di prodotti e di varie marche. Un data warehouse o data mart per un rivenditore di questo tipo dovrebbe fornire agli analisti la possibilità di eseguire report di vendita raggruppati per negozio, data (o mese, trimestre o anno) o categoria o marchio di prodotto.

Esempio di schema a stella

Se questo data mart stava usando uno schema a stella, apparirebbe come segue:

Esempio di uno schema a stella

La tabella dei fatti sarebbe una registrazione delle transazioni di vendita, mentre ci sono tabelle delle dimensioni per data, negozio e prodotto. Le tabelle delle dimensioni sono collegate ciascuna alla tabella dei fatti tramite la loro chiave primaria, che è una chiave esterna per la tabella dei fatti. Ad esempio, invece di memorizzare la data della transazione effettiva in una riga della tabella dei fatti, viene salvata la data_id. Questo date_id corrisponde a una riga univoca nella tabella Dim_Date e tale riga memorizza anche altri attributi della data richiesti per il raggruppamento nei report. ad es. giorno della settimana, mese, trimestre dell'anno e così via. I dati sono denormalizzati per facilitare la segnalazione.

Ecco come si otterrebbe una relazione sul numero di televisori venduti per marca e per paese con l'aiuto di join interni.

Esempio di schema Snowflake

Lo stesso scenario può anche utilizzare uno schema a fiocco di neve, nel qual caso sarebbe strutturato come segue:

Esempio di schema Snowflake (clicca per ingrandire)

La differenza principale, se confrontata con lo schema a stella, è che i dati nelle tabelle delle dimensioni sono più normalizzati. Ad esempio, invece di memorizzare mese, trimestre e giorno della settimana in ciascuna riga della tabella Dim_Date, questi vengono ulteriormente suddivisi nelle rispettive tabelle delle dimensioni. Analogamente per la tabella Dim_Store, lo stato e il paese sono attributi geografici che vengono rimossi solo un passaggio: invece di essere memorizzati nella tabella Dim_Store, sono ora memorizzati in una tabella Dim_Geography separata.

Lo stesso rapporto - il numero di televisori venduti per nazione e per marca - è ora un po 'più complicato che in uno schema a stella:

Query SQL per ottenere il numero di prodotti venduti per paese e marca, quando il database utilizza uno schema a fiocco di neve.

Riferimenti

  • wikipedia: Snowflake_schema
  • wikipedia: Star_schema