Change Data Capture
Da Wikipedia, l'enciclopedia libera
Nel
database ,
Change Data Capture (CDC) è un insieme di software
design pattern usati per determinare (e traccia) i dati che ha cambiato in modo che l'azione può essere assunto con i dati modificati. Inoltre, Change Data Capture (CDC) è un approccio di integrazione dei dati che si basa sulla cattura di identificazione, e la consegna delle modifiche apportate ai dati aziendali.
Soluzioni CDC si verificano più spesso in
data-warehouse ambienti dal catturare e conservare lo stato dei dati nel tempo è una delle funzioni principali di un data warehouse, ma CDC può essere utilizzato in qualsiasi sistema di database o archivio dati.
Metodologia
Sviluppatori di sistemi possono creare meccanismi di CDC in diversi modi e in ogni uno o una combinazione di strati di sistema da logica applicativa fino a storage fisico.
In un contesto semplificato CDC, un sistema informatico dispone di dati creduto di avere cambiato da un punto precedente nel tempo, e un sistema secondo computer ha bisogno di agire sulla base di che dati modificati. Il primo è la fonte, il secondo è il bersaglio. E 'possibile che la sorgente e di destinazione sono lo stesso sistema fisico, ma non cambia il design pattern logicamente.
Non di rado, più soluzioni CDC può esistere in un unico sistema.
Timestamp sulle righe
Le tabelle in cui le modifiche devono essere catturati può avere una colonna che rappresenta il tempo di
ultima modifica. Nomi come LAST_UPDATE, ecc sono comuni. Ogni riga, in ogni tabella che include un timestamp in quella colonna che è più recente rispetto l'ultima volta che è stato catturato dati è considerato sono cambiate.
Numeri di versione sulle righe
Progettisti di database dare tabelle di cui le modifiche devono essere catturato una colonna che contiene un numero di versione. Nomi come version_number, ecc sono comuni. Quando i dati in un cambia fila, il suo numero di versione è aggiornata alla versione corrente. Un costrutto di supporto come ad esempio una tabella di riferimento con la versione corrente in esso è necessario. Quando un cambiamento avviene la cattura, tutti i dati con il numero di versione più recente è considerato sono cambiate. Quando la cattura cambiamento è completo, la tabella di riferimento viene aggiornata con un nuovo numero di versione.
Tre o quattro principali tecniche esistenti per fare CDC con numeri di versione, il paragrafo precedente è solo uno.
Indicatori di stato sulle righe
Questa tecnica può sostituire o integrare i timestamp e versioni. E 'possibile configurare un'alternativa se, per esempio, una colonna di stato è impostato su una riga della tabella che indica che la riga è stata modificata (ad esempio una colonna booleana che, se impostata su true, indica che la riga è cambiato). Altrimenti, può fungere da complemento ai metodi precedenti, indicando che una fila, pur avendo un nuovo numero di versione o una data precedente, ancora non devono essere aggiornati sul bersaglio (per esempio, i dati può richiedere la convalida umano).
Tempo / Versione / Stato sulle righe
Questo approccio combina i tre metodi precedentemente discussi. Come noto, non è raro vedere più soluzioni CDC al lavoro in un unico sistema, tuttavia, la combinazione di tempo, la versione e lo stato fornisce un meccanismo particolarmente potente e programmatori dovrebbero utilizzare come trio, ove possibile. I tre elementi non sono ridondanti o superflue. Il loro utilizzo permette insieme per la logica come, "Cattura tutti i dati per la versione 2.1 che ha cambiato tra il 2005/06/01 00:00 e 2005/07/01 12:00 dove il codice di stato indica che è pronto per la produzione."
Trigger su tabelle
Può includere un
publish / subscribe modello di comunicare i dati modificati a obiettivi multipli. In questo approccio,
innesca eventi del registro che succederà al tabella delle transazioni in un'altra tabella coda che possono poi essere "riprodotte". Per esempio, immaginate una tabella Conti, quando le transazioni sono nei confronti di questa tabella, si innesca il fuoco che avrebbe quindi memorizzare una storia della manifestazione o anche i delta in una tabella coda separata. La tabella di coda potrebbe avere lo schema con i seguenti campi: Id, TableName, RowId, TimeStamp, funzionamento. I dati inseriti per il nostro campione del conto potrebbe essere: 1, Conti, 76, 2008/11/02 00:15, Aggiornamento. Progetti più complessi potrebbe registrare i dati effettivi che ha cambiato. Questa tabella di coda potrebbe essere "riprodotte" per replicare i dati dal sistema di origine a un bersaglio.
[Maggiori discussione necessaria]
Un esempio di questa tecnica è il modello conosciuto come il
grilletto log .
Log scanner su database
La maggior parte dei sistemi di gestione di database gestire un log delle transazioni che le modifiche apportate al record contenuto del database e dei metadati . Attraverso la scansione e interpretare il contenuto del log delle transazioni del database si possono memorizzare le modifiche apportate al database in modo non intrusivo modo.
Utilizzando i registri delle transazioni per Change Data Capture offre una sfida che la struttura, i contenuti e l'utilizzo di un log delle transazioni è specifico per un sistema di gestione di database. A differenza di accesso ai dati, non esiste uno standard per i registri delle transazioni. La maggior parte dei sistemi di gestione di database non documentano il formato interno dei loro registri delle transazioni, anche se alcuni di fornire interfacce programmatiche per il loro log delle transazioni (per esempio: Oracle, DB2, SQL / MP, SQL / MX e SQL Server 2008).
Altre sfide nell'utilizzo di log delle transazioni per Change Data Capture sono:
- Coordinare la lettura dei registri delle transazioni e l'archiviazione dei file di log (software per la gestione del database di solito i file di log archivio off-line in maniera regolare).
- Traduzione tra i formati di memorizzazione fisici che sono registrati nel log delle transazioni e dei formati logica tipicamente attesa dagli utenti del database (ad esempio, alcuni registri delle transazioni salvare solo differenze minime tampone che non sono direttamente utili per i consumatori, il cambiamento).
- Trattare con modifiche al formato dei registri delle transazioni tra le versioni del sistema di gestione di database.
- Eliminando modifiche non che il database ha scritto nel log delle transazioni e più tardi il rollback .
- Trattare con modifiche ai metadati delle tabelle nel database.
CDC soluzioni basate sui file di log delle transazioni sono vantaggi che includono:
- impatto minimo sul database (tanto più se si usa log per elaborare i log su un host dedicato).
- non necessità di modifiche a livello di codice le applicazioni che utilizzano il database.
- a bassa latenza per l'acquisizione modifiche.
- l'integrità delle transazioni : la scansione di log può produrre un flusso di cambiamento che ripete le transazioni originale nell'ordine in cui sono stati commessi. Tale flusso di cambiamento includono le modifiche apportate a tutte le tabelle che partecipano alla transazione catturato.
- c'è bisogno di cambiare lo schema del database