Sto utilizzando Data Warehousing errato?

4

Lavoro per un'azienda che ha diversi prodotti e diversi database e tonnellate di dati.

Per unire un po 'tutti questi dati, quello che abbiamo fatto spostando alcuni dei nostri dati in Amazon Redshift (un data warehouse). Archiviamo il più possibile (tutto molto de-normalizzato). Consideriamo il redshift dei nostri dati di "origine", dal momento che abbiamo modificato molte procedure per inserire quasi tutto il bulk direttamente nel data warehouse prima di passare a qualsiasi altro database.

La parte che ho difficoltà a capire è che pensavo che un data warehouse potesse essere d'aiuto nella segnalazione.

Con Amazon Redshift, hanno disabilitato le stored procedure, i ctes ricorsivi, le funzioni definite dall'utente e un sacco di altre cose ... il che rende difficile riportare i dati.

Quello che facciamo in molte situazioni, è esportare i dati da redshift in un altro database, solo così possiamo eseguire alcuni report (non tutti i dati, esportiamo solo i dati rilevanti per il report).

Alcuni altri report che vengono eseguiti abbiamo impostato programmi che generano in modo dinamico lo sql e inviano la query ad hoc per ottenere i dati di cui abbiamo bisogno, questi programmi diventano un bel casino dopo troppe modifiche (concatenando le stringhe per rendere lo sql, difficile da testare senza solo eseguire il programma ect)

Questo sembra tutto sbagliato, stiamo usando il concetto di data warehousing sbagliato?

    
posta Kyle 02.11.2014 - 17:46
fonte

2 risposte

3

Invece di pensare al data warehouse come a un magazzino (archiviare il più possibile, molto denormalizzato), per ottenere i benefici di cui hai bisogno per pensare a quali benefici vuoi ottenere da esso. Fondamentalmente, nel data warehouse, invece di avere solo dati, hai fatti e misure (dimensioni). Dopo aver creato questi fatti e dimensioni, otterrai quello che viene chiamato uno schema di fiocchi di neve, cioè non molto normalizzato.

Se si dispone di report che si basano su stored procedure, funzioni definite dall'utente, ecc. è probabilmente necessario aggiornarli per sfruttare lo schema del data warehouse. Fatto correttamente, i report dovrebbero avere solo bisogno di alcuni join e forse di calcoli speciali che sono archiviati in alcune librerie, non nel database.

Un altro modo di usare il data warehouse è usare le librerie OLAP, è come SQL per il data warehouse. Le query OLAP funzionano sul data warehouse Cube, che è una raccolta di fatti e dimensioni. Le librerie OLAP le traducono in query SQL.

Inoltre, è probabilmente più facile capire come costruire il data warehouse utilizzando gli strumenti ETL prima di iniziare a memorizzare i dati direttamente nel data warehouse in modo da poter capire quali trasformazioni sarebbero necessarie. Alla fine, dovrebbe essere facile ottenere report e analisi dal tuo data warehouse usando applicazioni off-shelf.

    
risposta data 03.11.2014 - 04:42
fonte
1

Se comprendo i tuoi metodi, stai trattando Redshift come una pila di dati inutili e devi pre-elaborare la posta indesiderata prima di poter eseguire rapporti tipici su di essa. La fase di pre-elaborazione è i dati di esportazione rilevanti per un determinato rapporto.

Se stavi usando Redshift come previsto, dovrebbe funzionare come un database (perché lo è). Tuttavia, questo probabilmente richiederà uno sforzo considerevole per ristrutturare il mucchio di spazzatura. Al contrario, lo sforzo dovrebbe essere ricompensato molte volte perché non dovrai perdere tempo a fare estrazioni personalizzate.

Redshift ha tutorial sostanziali su come utilizzare il prodotto ; Vorrei iniziare lì.

    
risposta data 02.11.2014 - 20:17
fonte

Leggi altre domande sui tag