Sincronizzazione del grafico dei dati su un altro database (come i dati)

1

Passaggio al nuovo sistema e necessità di mantenere attivi i vecchi dati per un po 'di tempo. Quindi, dobbiamo aggiornare il vecchio database con i dati quando il nuovo sistema viene aggiornato.

Si tratta di dati transazionali, come ordini / spedizioni. Banche dati simili in linea di principio ma strutture diverse. Quando vengono apportate modifiche all'ordine nel nuovo sistema, è necessario sincronizzare fino a 10 tabelle.

Ecco il mio dilemma. Come fare per le transazioni? Ovviamente, tutto il batch deve essere incluso nella transazione. Ma diventa una grossa porzione di codice all'interno della transazione. Sto cercando di ridurre al minimo il tempo "in transazione" e invece di eseguire solo "AGGIORNAMENTO" - Sto prima controllando (interrogando) la destinazione se uno qualsiasi dei campi è stato modificato e quindi contrassegno il record per l'aggiornamento. Quindi, alla fine, la transazione interna che eseguiamo è stata aggiornata solo sui record che solo in realtà sono stati modificati, non aggiornando tutto.

Sono solo curioso di cosa pensi dell'approccio? Abbiamo molto più codice in anticipo (prima della transazione), ma la transazione effettiva è super leggera, invece di aggiornare 20 righe in 10 tabelle: potremmo aggiornare solo una tabella 1 riga. Ha senso?

    
posta katit 23.07.2015 - 00:16
fonte

1 risposta

1

Penso che l'elaborazione in batch sia ciò che stai cercando.

Puoi separare una grande transazione in lotti più piccoli, per evitare di inviare enormi pacchetti nel database e rendere i blocchi più piccoli.

Gli strumenti da utilizzare dipendono dalla tecnologia che stai utilizzando, ma l'elaborazione in batch è molto comune e ogni lingua ha un'API correlata.

Se stai usando Java, puoi controllare questo link per vedere un esempio di utilizzando API batch JDBC .

Se vuoi usare un framework, Spring è un framework che fornisce molte funzionalità (inclusa l'API Batch). Puoi controllare questo link per vedere alcuni usi.

    
risposta data 23.07.2015 - 09:47
fonte

Leggi altre domande sui tag