Se l'origine è solo inserimento, assegnagli una IDENTITY
colonna. Quando si esegue il trasferimento dei dati, si registra il valore più alto scritto. Durante il trasferimento successivo è necessario solo eseguire una query per valori superiori a quelli registrati durante il trasferimento precedente. Lo facciamo per il trasferimento dei record di registro in un data warehouse.
Per le file aggiornabili aggiungere un flag "sporco". Avrà tre valori: pulito, sporco ed eliminato. Le query quotidiane dovranno omettere le righe con il flag impostato su "eliminato". Questo sarà costoso in termini di manutenzione, test e tempo di esecuzione. Dopo la query di grandi dimensioni si menziona tutte le righe contrassegnate per l'eliminazione devono essere rimosse e il flag ripristinato per tutte le altre. Questo non si ridimensionerà bene.
Un'alternativa più leggera a Change Data Capture è il rilevamento delle modifiche . Non ti dirà quali valori sono cambiati, solo che la riga è cambiata dall'ultima query. Le funzioni integrate facilitano il recupero di valori modificati e la gestione del monitoraggio. Abbiamo avuto successo utilizzando CT per elaborare circa 100.000 modifiche al giorno in una tabella di 100.000.000 di righe.
Le notifiche delle query agiscono ancora a una leva superiore, a livello di un set di risultati. Concettualmente, è come definire una vista. Se SQL Server rileva che qualsiasi riga restituita tramite tale vista è stata modificata, genera un messaggio per l'applicazione. Non vi sono indicazioni sul numero di righe modificate o su quali colonne. C'è solo un semplice messaggio che dice "qualcosa è successo". Spetta all'applicazione informarsi e reagire. Praticamente è molto più complesso di così, come puoi immaginare. Esistono restrizioni su come definire la query e la notifica può essere attivata per condizioni diverse dalla modifica dei dati. Quando la notifica viene attivata, viene rimossa. Se successivamente si verificano ulteriori attività di interesse, non verranno inviati ulteriori messaggi.
Nel contesto della domanda del PO, QN avrà il vantaggio di essere un overhead basso da impostare e costi di gestione ridotti. Può essere uno sforzo significativo per stabilire e mantenere un rigoroso regime di abbonamento-messaggio-reazione. Poiché la tabella dei dati è grande, è probabile che vi siano frequenti modifiche, il che significa che la notifica si attiverà nella maggior parte dei cicli di elaborazione. Poiché non vi è alcuna indicazione di ciò che non sarà possibile modificare l'elaborazione incrementale dei delta, come farebbe con CT o CDC. Il sovraccarico dovuto a falsi trigger è noioso, ma anche nel peggiore dei casi non è necessario eseguire la query costosa più frequentemente di quanto non sia attualmente.