Coordinamento di un complicato processo di migrazione dei dati

0

Un progetto in cui sono coinvolto ha subito un cambiamento nel campo di applicazione, e prima che iniziassi a provare a inventare una soluzione homegrown, mi chiedo se c'è qualcosa là fuori - qualche struttura, per esempio - che mi eviterà di dover progettare e eseguire il debug del mio codice personale. Lasciatemi provare a spiegare i dettagli nel modo più semplice possibile.

Progetto originale

Questo è un progetto di migrazione dei dati, un ETL. Originariamente, esistevano più database di origine, più motori ETL (che consentivano il failover) e 1 unico database di data warehouse. Il data warehouse avrebbe mantenuto i dati delle singole fonti dritte, e sarebbe stato replicato, dietro le quinte: il mio ETL avrebbe dovuto solo preoccuparsi di scrivere nel data warehouse. Avevo un piano per questo.

Modifica del progetto

Ora, il cliente è preoccupato di mescolare i singoli dati di origine in un singolo data warehouse. Vogliono magazzini di dati separati. Questo sarebbe abbastanza semplice, ma per il fatto che vogliono ancora che i motori ETL funzionino secondo l'accordo originale. Lascia che te lo spieghi.

I requisiti del progetto (in poche parole)

Immaginiamo quanto segue:

  • 4 database di origine
  • 4 motori ETL
  • 4 data warehouse (che possono essere ciascuno su un server separato)

Considerato quanto sopra, i motori ETL dovrebbero essere in grado di lavorare round-robin, un singolo motore ETL che preleva da uno qualsiasi dei 4 database di origine e scrive nel data warehouse appropriato. Se 1 o più database di origine diminuiscono, o 1 o più motori ETL diminuiscono, o 1 o più data warehouse diminuiscono, il processo ETL dovrebbe continuare, allegramente, eseguendo ETL dove può essere fatto.

Il mio problema

Se esistesse 1 data warehouse, potrei coordinarlo; se i motori ETL avessero solo una singola origine dati e una coppia di data warehouse a cui erano assegnati, potrei gestirlo; ma ora le cose si sono complicate. Non sono davvero ottimista sui framework - o forse, forse sui concetti - che gestiscono qualcosa di simile. Forse c'è un nome in uno scenario come questo (ed è un problema ben noto), ma non conosco nemmeno il nome.

Tecnologie utilizzate

Nota: disponiamo già di un prototipo funzionante, consegnato e testato dal cliente, che esegue l'ETL su 1 fonte e 1 destinazione. Ecco cosa stiamo usando:

  • Jython (Python, in esecuzione sulla JVM) per l'ETL
  • Microsoft SQL Server per i database di origine
  • MySQL per i database del data warehouse

La mia domanda (di nuovo)

Esiste una sorta di framework che coordina un processo come questo, in cui i motori ETL possono servire tutte le coppie di destinazione-destinazione, fornire il failover e tuttavia non si calpesteranno l'un l'altro, o è qualcosa che ho per programmare me stesso.

In chiusura, spero che quanto sopra sia chiaro. Se posso fare qualsiasi cosa per chiarire quanto sopra, per favore chiedi. Grazie.

    
posta Mario 04.10.2014 - 19:55
fonte

1 risposta

1

Sembra che tu voglia mantenere la tua logica etl esistente più o meno la stessa, ma è necessario un nuovo processo per deviare i dati in un modo più dinamico.

Alcuni tipi di agenti software possono fungere da ponte tra il livello di trasformazione e il livello di caricamento DB, fornendo le funzionalità aggiuntive necessarie.

Sono sicuro che qualcosa del genere esiste e quello che vorrei fare è contattare alcuni dei maggiori produttori di etl e database e vedere cosa hanno da offrire. Personalmente, codificherei il mio bridge (chiamiamolo un agente di migrazione) e manterrò le modifiche al codice nei moduli etl esistenti al minimo assoluto se possibile

    
risposta data 05.10.2014 - 22:49
fonte

Leggi altre domande sui tag