Background:Publish/Subscribe modello in SQL
Abbiamo un grande tavolo (15+ milioni di euro) di oggetti che viene aggiornato frequentemente durante il giorno (in media 300K variazioni giornaliere). Le modifiche in sospeso sono memorizzate in una tabella di staging e un processo viene eseguito durante il giorno per leggere le modifiche da questa tabella, apportare gli aggiornamenti e contrassegnare le modifiche come elaborate.
Molte altre applicazioni utilizzano i dati nella tabella degli articoli per eseguire varie attività. Spesso, queste attività sono programmate e intensive, poiché implicano il confronto dei dati in tempo reale con le vecchie istantanee e l'aggiornamento di altri sistemi di conseguenza. Ad esempio, elenchiamo gli articoli su eBay e confrontiamo i dati degli articoli in tempo reale con le nostre schede esistenti per vedere se abbiamo bisogno di inserire nuove inserzioni eBay, rimuovere articoli che abbiamo venduto, aggiornare quantità, ecc. Poiché i dati sono così grandi, la maggior parte di queste applicazioni vengono eseguite raramente, lasciando le cose obsolete il più delle volte.
La mia domanda:
Stiamo valutando l'implementazione di un modello di editore/sottoscrittore utilizzando il Service Broker. L'obiettivo sarebbe quello di pubblicare un messaggio quando un elemento cambia, a cui altri sistemi (come la nostra applicazione eBay) possono abbonarsi. Ciò ci consentirebbe di rendere più granulari gli aggiornamenti più vicini al tempo reale, piuttosto che aggiornamenti grandi e poco frequenti che coinvolgono l'interrogazione di tutti i dati, non solo ciò che è cambiato. Tuttavia, dopo aver utilizzato Google, non sembra che questo sia un modello di database comune e che generi bandiere rosse. Questo non è un uso valido di Service Broker (anche se ho trovato una piccola sezione in Pro Sql Server 2008 Service Broker su Pub/Sub)? Come si risolve questo problema normalmente? Sembra un problema abbastanza comune.
TL; DR:
Calcio: Modifica vari sistemi in modo dinamico, ad accoppiamento quando gli elementi singoli cambiano.
Domanda: È stata implementata una soluzione di tipo pub/sub con Service Broker in una soluzione valida in un'impostazione di volume elevato?
Due domande: perché queste applicazioni utilizzano i dati nella tabella degli elementi principali anziché elaborare le modifiche in sospeso nella tabella di staging? Secondo: hai assolutamente bisogno di SQL Server per contenere e pubblicare gli articoli? –
Dai un'occhiata alla replica SQL incorporata, è abbastanza flessibile da contenere un'ampia gamma di scenari. – alexm
@KubaWyrostek è stato il nostro primo pensiero e ciò che ci ha portato a considerare l'approccio basato sui messaggi. Piuttosto che leggere da quel tavolo ogni tanto, perché non usarlo come fonte di messaggi "Item Changed". Forse uno strato di astrazione non necessario, ma man mano che la tabella di staging viene cancellata periodicamente dagli aggiornamenti elaborati, il pensiero più sicuro e flessibile sarebbe Service Broker – Bort