Domanda

sto cercando di conoscere OLAP e di data warehousing, e sono confuso circa la differenza tra la modellazione relazionale e dimensionale. È modellazione tridimensionale fondamentalmente modellazione relazionale, ma tenendo conto dei dati ridondanti / non-normalizzato?

Per esempio, diciamo che non ho i dati di vendita storici sulla (prodotto, città, # vendite). Capisco che il seguente sarebbe un punto di vista-di-relazionale:

Product | City | # Sales
Apples, San Francisco, 400
Apples, Boston, 700
Apples, Seattle, 600
Oranges, San Francisco, 550
Oranges, Boston, 500
Oranges, Seattle, 600

Mentre la seguente è una vista punto di più dimensionale:

Product | San Francisco | Boston | Seattle
Apples, 400, 700, 600
Oranges, 550, 500, 600

Ma sembra che entrambi i punti di vista sarebbe comunque essere implementate in uno schema a stella identico:

Fact table: Product ID, Region ID, # Sales
Product dimension: Product ID, Product Name
City dimension: City ID, City Name

E non è fino a quando si inizia l'aggiunta di alcuni dettagli aggiuntivi per ogni dimensione che le differenze cominciano a spuntare. Per esempio, se si vuole tenere traccia regioni pure, un database relazionale tenderebbe ad avere un tavolo regione separata, al fine di tenere tutto normalizzata:

City dimension: City ID, City Name, Region ID
Region dimension: Region ID, Region Name, Region Manager, # Regional Stores

Mentre una banca dati tridimensionale permetterebbe di denormalizzazione per mantenere i dati della regione all'interno della dimensione della città, al fine di rendere più facile per affettare i dati:

City dimension: City ID, City Name, Region Name, Region Manager, # Regional Stores

È corretto?

È stato utile?

Soluzione

uno schema a stella davvero si trova all'incrocio del modello relazionale dei dati e il modello dimensionale dei dati. E 'davvero un modo di iniziare con un modello tridimensionale, e la mappatura in tabelle SQL che in qualche modo ricordano le tabelle SQL si ottiene se si parte da un modello relazionale.

dico un po 'assomigliano perché molte metodologie di progettazione relazionale si traducono in un disegno normalizzato, o almeno un disegno quasi normalizzata. Uno schema a stella avrà scostamenti significativi rispetto ai piena normalizzazione.

Ogni partenza dalla piena normalizzazione comporta un conseguente aggiornamento dei dati anomalia. (Sto compresi anomlaies su inserire, aggiornare e operazioni di eliminazione sotto un unico ombrello). Queste anomalie non hanno nulla a che fare con quello che modello di dati di partenza.

Il commento OLTP vs OLAP è rilevante qui. Aggiornamento anomalie avranno effetti diversi sulle prestazioni e / o difficoltà di programmazione in queste due situazioni.

Oltre a uno schema a stella in un databaase SQL, ci sono prodotti di database dimensionali là fuori che memorizzano i dati in una forma fisica che è unico per quel prodotto. Con questi prodotti, non si vede uno schema a stella così tanto come si vede un'applicazione diretta del modello tridimensionale, e un'interfaccia che potrebbe essere proprio del prodotto. Alcune di queste interfacce permettono operazioni OLAP di essere completamente point-and-click.

Proprio come una digressione dalla tua domanda, una volta ho costruito uno schema a stella come un passaggio intermedio tra un database OLTP che ha sostenuto un'applicazione basata su transazioni e un DataCube all'interno Cognos PowerPlay. Utilizzando tecniche ETL standard, il trasferimento combinato dal database OLTP al schema a stella e poi dal schema a stella al cubo dati effettivamente superato il trasferimento diretto dal database OLTP al DataCube. Questo è stato un risultato inaspettato.

Spero che questo aiuti.

Altri suggerimenti

In parole semplici OLTP database normalizzato sono progettati con più ottimale punto "transazionale" di vista. I database sono normalizzati a lavorare in modo ottimale per un sistema transazionale. Quando dico ottimizzazione del sistema transazionale intendo ..getting ad uno stato di progettazione della struttura del database in cui tutte le operazioni transazionali come cancellare, inserire, aggiornare e selezionare sono equilibrati per dare uguale o ottimale importanza per tutti loro, in qualsiasi punto del tempo .. .come sono valutate in modo uguale in un sistema transazionale.

E che ciò che aggiorna possibile un normalizzato offerta del sistema ..minimal per un aggiornamento dei dati, inserto minimo possibile per nuova voce, un posto per la categoria cancellare l'eliminazione, ecc (ad esempio nuova categoria di prodotto) ... tutto questo è possibile ramo di noi un creare tabelle maestro ..... ma questo viene a costo di "selezionare" ritardo operazione ..ma come ho detto la sua (normalizzazione) modella non più efficiente per tutte le operazioni ..its "ottimale" ... dopo aver detto che ottenere altri metodi per migliorare i dati recupero speed..like indicizzazione etc

Sul modello dimensionale altra parte (in gran parte utilizzato per la progettazione casa dei dati-ware) .. significato per dare importanza ad un solo tipo di operazioni i thats Selezione dei dati ... come in case di dati-ware aggiornamento ..data / inserimento avviene periodicamente ..e sua un costo di una volta.

Quindi, se uno prova per affinare struttura di dati normalizzata in modo che solo la selezione è la più importante operazione in qualsiasi punto nel tempo ... ci sarà finire per ottenere un denormalizzato (direi parzialmente denormalizzato) .. dimensionale struttura a stella.

  • tutte le chiavi esterne un unico luogo Fatto -no dimensione alla dimensione unirsi (cioè master tabella master join) .. fiocco di neve rappresentano stessa dimensione
    • fatti idealmente progettato portano solo numeri ..measures o chiavi esterne
    • dimensione vengono utilizzati per trasportare descrizione e le informazioni non aggregabile
    • la ridondanza dei dati viene ignorato ... ma in rari casi, se si crescere Dimensioni troppo disegno .snowflake è visto come option..but che ancora è evitabile

Per ulteriori informazioni si prega di andare attraverso i libri più dettagliate su questo argomento.

Ho appena letto di recente sulla differenza tra dimensionale e relazionale Data Modeling dal momento che utilizzano principalmente modelli relazionali al mio business in cui conserviamo un Enterprise Data Warehouse (EDW).

Secondo Steve Hoberman nel suo libro "Data Modeling Made Simple" la distinzione tra i 2 tipi di modelli è questo:

  • dati relazionali Modelli cattura la soluzione di business per come parte delle opere di business, a.k.a processi di business
  • Dimensional Models Data Capture i dettagli le esigenze di business per rispondere alle domande su quanto bene si sta facendo

Si può sostenere che un modello relazionale può essere utilizzato anche come base su cui per rispondere alle domande di business, ma a livello tattico. "Quanti ordini sono in uno stato insoddisfatto per il cliente x causa di attesa credito?" Ma la distinzione è quella in cui la domanda di segnalazione ha bisogno del 'grano native' del tavolo e quando la domanda di reporting può essere risolta con i dati riassunti.

Nel vostro sopra i 2 esempi in realtà sono entrambi esempi di dati dimensionali modellazione in quanto nessuno dei 2 tavoli quando si ripone l'ordine di vendita al suo 'grano native', e quindi non cogliere il processo di business di creazione di un ordine di vendita. L'unica differenza tra i 2 tavoli è che nella seconda tabella la dimensione della città è stata recepita nella tabella dei fatti.

Ho trovato la descrizione che ho trovato su http://www.orafaq.com/node/2286 di essere molto utile quando si arriva a stella lo schema di una prospettiva relazionale.

  

Si consideri un modello di dati completamente normalizzata. Ora, pensare esattamente il contrario, in cui si denormalizzare completamente il modello di dati relazionali in modo da avere un solo record piatto come un foglio di calcolo big'ol con una vasta fila. Ora eseguire il backup da questo disco piatto solo un po 'in modo da avere un modello di dati che è solo due livelli di profondità; un tavolo grande, e diversi tavolini che i grandi punti di tabella Torna. Questo è uno schema a stella. Così un vero e proprio modello di dati stella ha due attributi, è sempre due livelli di profondità, e un vero e proprio modello di stelle contiene sempre un solo grande tavolo che è al centro del modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top