Mysql
 sql >> Database >  >> RDS >> Mysql

Ascolta le modifiche al database in MySQL

Bene, non è del tutto impossibile notificare ai clienti le modifiche apportate al database, anche se non esiste una soluzione integrata per questo.

In mysql puoi creare funzioni definite dall'utente (UDF) compilate in C/C++. Questi possono estendere la funzionalità di mysql praticamente in qualsiasi modo tu voglia, come l'invio di messaggi sulla rete. Puoi creare la tua UDF o utilizzare le librerie disponibili su mysqludf.org per inviare messaggi in rete. Potresti iniziare con l'utilizzo della libreria STOMP su mysqludf.org per inviare STOMP messaggi. Poiché STOMP è indipendente dalla lingua, puoi usarlo anche dall'ambiente .NET, vedi questo argomento SO (se cerchi in Internet il server .net STOMP, troverai altri esempi).

L'applicazione client deve implementare un server STOMP in grado di ricevere i messaggi STOMP dal server.

Nel database è necessario creare una tabella di abbonamento che contenga le informazioni a cui il client si iscrive per quali notifiche e come connettersi ad esso (indirizzo IP/nome host e numero di porta come minimo).

Devi anche creare attivatori su tutte le tabelle e gli eventi per i quali desideri inviare notifiche.

Creerei anche una procedura o una funzione memorizzata che riceve i dati modificati o il fatto che una determinata tabella è stata modificata dai trigger, controlla la tabella di sottoscrizione, crea il messaggio STOMP e quindi chiama l'UDF compilato che invia il messaggio STOMP a tutti i clienti iscritti. I trigger chiamerebbero questa procedura o funzione memorizzata invece di implementare tutte queste funzionalità in ciascuno dei trigger.

I client devono essere modificati per elaborare le notifiche e intraprendere ulteriori azioni o richiedere all'utente.

Dichiarazione di non responsabilità:non sostengo che questa sia la soluzione più adeguata e scalabile per il tuo caso particolare. Tuttavia, in questo modo puoi implementare da solo un sistema di notifica evitando la necessità di eseguire il polling del tuo database.