2010-06-19 8 views
13

Dopo aver trascorso un po 'di tempo a lavorare sul data warehousing, ho creato sia processi ETL (extract Transform Load) che ELT (extract load transform). Sembra che ELT sia un approccio più recente alla compilazione di data warehouse in grado di sfruttare più facilmente le risorse di elaborazione del cluster. Mi piacerebbe sentire quali altre persone pensano che i vantaggi di ETL e ELT siano gli uni rispetto agli altri e quando si dovrebbe usare l'uno o l'altro.Quale è meglio, ETL o ELT?

risposta

5

Quindi, dopo aver giocato a fondo con ETL e ELT, sono giunto alla conclusione che dovresti evitare l'ELT a tutti i costi. ETL prepara i dati per il tuo magazzino prima che tu lo carichi effettivamente. ELT carica i dati grezzi nel magazzino e li trasforma in posizione. Ciò è problematico se si dispone di un data warehouse occupato. Se è presente una query di reporting in esecuzione su una tabella che si tenta di aggiornare, la query verrà bloccata. Di conseguenza, è possibile che le query di report mantengano o blocchino gli aggiornamenti.

Ora alcuni di voi potrebbero dire che le query di segnalazione non hanno bisogno di bloccare un aggiornamento ed è possibile impostare il proprio livello di isolamento per consentire letture sporche. Le richieste di segnalazione tuttavia non sono generalmente eseguite da ingegneri del software. Vengono eseguiti dagli utenti aziendali, quindi non puoi fare affidamento su di essi per impostare correttamente i loro livelli di isolamento. Inoltre, non tutte le segnalazioni possono tollerare letture sporche.

In alcuni casi, ELT può funzionare introducendolo nel data warehouse in modo pericoloso e, di conseguenza, lo consiglio per la sua sanità mentale e per la sua manutenibilità, evitarlo.

+3

Non sono d'accordo. Penso che ci sia un posto per entrambi gli approcci. Personalmente preferisco ELT se la situazione lo consente. La maggior parte dei data warehouse viene caricata ogni notte durante le loro finestre di manutenzione ... e se ti stai riferendo a data warehouse in un ambiente follow-the-sun, ti imbatterai in problemi indipendentemente dall'approccio con cui vai (potrebbe essere necessario ottenere un poco creativo). Trovo di avere più controllo con ELT .. per non parlare della tua capacità di conservare i dati grezzi a scopo di archiviazione. –

+0

Un'altra cosa che volevo aggiungere ...Penso che ELT richieda risorse database/sql più esperte per mantenerlo poiché la maggior parte del lavoro sta avvenendo all'interno del database. Questo, in modo indiretto, è una domanda simile alla domanda vs domanda di database ... http://stackoverflow.com/questions/119540/business-logic-database-or-application-layer –

+0

Non c'è risposta giusta .. .. –

4

Io uso entrambi. È semplicemente una questione di comodità e funzionalità. Tutto dipende dal caso. A volte faccio TEL - I.e. la trasformazione viene eseguita nel database di origine (in una stored procedure o vista) e quindi estratta e caricata direttamente.

5

Quale è meglio è difficile rispondere - dipende dal problema.

Preferisco ETL multi-passo - ECCD (Estratto, pulito, conforme, consegna) quando possibile. Conservo anche i file csv intermedi dopo ogni fase di estrazione, pulizia e conformità; prende dello spazio su disco, ma è abbastanza utile. Ogni volta che DW deve essere ricaricato a causa di bug in etl o modifiche dello schema DW, non c'è bisogno di interrogare nuovamente i sistemi di origine - è già in file flat. È anche abbastanza comodo essere in grado di grep, sed e awk tramite file flat nell'area di staging quando necessario. Nel caso in cui vi siano diversi sistemi di origine che si collegano allo stesso DW, solo i passaggi di estrazione devono essere sviluppati (e gestiti) per ciascuno dei sistemi di origine: pulizia, conformità e consegna sono comuni.

2

Preferisco ELT. Si può dire che è contro la norma. Richiede un cambiamento di mentalità e un approccio progettuale rispetto ai metodi tradizionali. Ma utilizza hardware esistente e set di competenze, riducendo ulteriormente i costi e i rischi nel processo di sviluppo.

Se vogliamo garantire l'integrità referenziale nell'approccio ETL, i dati devono essere scaricati dalla destinazione al server ETL (Motore). Ma non abbiamo bisogno di farlo nell'approccio ETL.

Per ottenere il meglio da un approccio ELT richiede una mente aperta.