Confronto tra Change Data Capture e il rilevamento delle modifiche

In SQL Server 2008 sono state introdotte due funzionalità di rilevamento che consentono alle applicazioni di determinare le modifiche DML (operazioni di inserimento, aggiornamento ed eliminazione) apportate alle tabelle utente in un database. Prima che queste funzionalità fossero disponibili, era necessario implementare meccanismi di rilevamento personalizzati nelle applicazioni. A differenza di tali meccanismi, che richiedevano spesso modifiche dello schema alla tabella con rilevamento o l'utilizzo di trigger, né Change Data Capture né il rilevamento delle modifiche richiede modifiche dello schema o l'utilizzo di trigger.

Change Data Capture

Change Data Capture fornisce informazioni cronologiche sulle modifiche per una tabella utente acquisendo l'esecuzione di modifiche DML e le modifiche effettive apportate ai dati. Le modifiche vengono acquisite utilizzando un processo asincrono che legge il log delle transazioni senza un impatto significativo sul sistema.

Come illustrato nella figura seguente, le modifiche apportate alle tabelle utente vengono acquisite nella tabella delle modifiche corrispondente. In tali tabelle è disponibile una vista cronologica delle modifiche nel tempo. Le funzioni di Change Data Capture disponibili in SQL Server consentono ai dati delle modifiche di essere utilizzati in modo semplice e sistematico.

Illustrazione concettuale di Change Data Capture

Rilevamento delle modifiche

Il rilevamento delle modifiche consente di acquisire l'esecuzione di modifiche alle righe di una tabella, ma non di acquisire i dati modificati. In questo modo le applicazioni sono in grado di determinare le righe che sono state modificate con gli ultimi dati delle righe ottenuti direttamente dalle tabelle utente. Di conseguenza, il rilevamento delle modifiche è più limitato nelle richieste relative alla cronologia cui è in grado di rispondere rispetto a Change Data Capture. Per le applicazioni che non richiedono le informazioni cronologiche, tuttavia, l'overhead di archiviazione relativo al rilevamento delle modifiche è notevolmente minore poiché i dati modificati non vengono acquisiti. Per tenere traccia delle modifiche, viene utilizzato un meccanismo di rilevamento sincrono appositamente progettato per consentire un overhead minimo per le operazioni DML.

Nella figura seguente viene illustrato uno scenario di sincronizzazione per cui sarebbe più vantaggioso utilizzare il rilevamento delle modifiche. In tale scenario un'applicazione richiede tutte le righe della tabella modificate dall'ultima sincronizzazione della tabella e solo i dati della riga correnti. Poiché per tenere traccia delle modifiche viene utilizzato un meccanismo sincrono, un'applicazione può eseguire una sincronizzazione bidirezionale e rilevare qualsiasi conflitto che potrebbe essersi verificato in modo affidabile.

Illustrazione concettuale del rilevamento delle modifiche

Differenze tra le funzionalità di Change Data Capture e del rilevamento delle modifiche

Nella tabella seguente vengono elencate le differenze tra le funzionalità di Change Data Capture e del rilevamento delle modifiche. Il meccanismo di rilevamento in Change Data Capture prevede un'acquisizione asincrona delle modifiche dal log delle transazioni in modo che le modifiche siano disponibili dopo l'operazione DML. Nel rilevamento delle modifiche il meccanismo prevede la registrazione sincrona di modifiche in linea con le operazioni DML in modo che le informazioni sulle modifiche siano disponibili immediatamente.

Funzionalità

Change Data Capture

Rilevamento delle modifiche

Modifiche rilevate

 

 

Modifiche DML

Informazioni rilevate

 

 

Dati cronologici

No

Modifiche apportate a una colonna

Tipo DML

Vedere anche

Concetti

Altre risorse