.NET SqlDependency con molte notifiche rispetto al polling ad alto tasso?

Ho un piccolo tavolo (circa 200 file) che cambia tutto il tempo (un paio di volte al secondo).
Stavo cercando una soluzione in cui potessi ricevere notifiche dal database ogni volta che cambia, piuttosto che interrogarlo (diciamo 5-10 volte al secondo).

Inoltre, vorrei ricevere solo le righe modificate ogni volta e non recuperare l’intera tabella – ho trovato questo piuttosto difficile da implementare utilizzando la class SqlDependency.

Un paio di cose da prendere in considerazione:

  1. Non ho il controllo sulle modifiche nella tabella né ho la capacità di ricevere i dati oltre all’utilizzo del database.
  2. Intendo creare un servizio che trasmetterà le modifiche ai miei server frontali

C’è un modo per farlo utilizzando SqlDependency?

Qual è la migliore pratica in questo caso?

BTW: sto usando SQL Server 2012

Grazie in anticipo

SqlDependency ti avviserà solo che si è verificata una modifica e dovrai rileggere l’intera tabella. Funziona bene con un basso tasso di notifiche. Ad un alto tasso, devi considerare che le notifiche hanno un costo significativo. Vedi La notifica misteriosa per maggiori dettagli su come funziona SqlDependency. Come puoi vedere, c’è un costo significativo:

  • impostare la notifica (scrivendo in sys.dm_qn_subscriptions e nelle tabelle di sistema SSB)
  • lanciare la notifica (scrivendo sys.dm_qn_subscriptions)
  • consegna della notifica (scrive in tabelle di sistema SSB, coda di destinazione)
  • ricezione della notifica (scrittura nella coda di destinazione, tabelle di sistema SSB)

Si tratta di un bel po ‘di scritture, il costo si sommerà rapidamente se ricevi una notifica costantemente.

Ma la vera domanda è: esattamente come si desidera reactjs all’applicazione a un tasso costante di cambiamento? cosa vuoi sapere, che qualcosa è cambiato? beh, lo sai, lo fa sempre, ogni volta che l’applicazione ha bisogno dei dati è meglio leggere lo stato più recente, perché sicuramente è cambiato. Anche il sondaggio non ha senso. Sembra che quello che vuoi veramente sia il rilevamento delle modifiche o, più probabilmente, una coda personalizzata di modifiche alimentate dai mittenti delle modifiche.