sql >> Base de Datos >  >> RDS >> Mysql

Escuche los cambios de la base de datos en MySQL

Bueno, no es del todo imposible notificar a los clientes sobre los cambios realizados en la base de datos, aunque no existe una solución integrada para esto.

En mysql puede crear funciones compiladas definidas por el usuario (UDF) en C/C++. Estos pueden ampliar la funcionalidad de mysql prácticamente de la forma que desee, como enviar mensajes a través de la red. Puede crear su propio UDF o usar bibliotecas disponibles en mysqludf.org para enviar mensajes a través de la red. Puede comenzar usando la biblioteca STOMP en mysqludf.org para enviar STOMP mensajes Dado que STOMP es independiente del idioma, también puede usarlo desde el entorno .NET, consulte este tema SO (si busca en Internet el servidor .net STOMP, encontrará más ejemplos).

La aplicación cliente debe implementar un servidor STOMP que pueda recibir los mensajes STOMP del servidor.

En la base de datos, debe crear una tabla de suscripción que contenga la información de qué cliente se suscribe para qué notificaciones y cómo conectarse (dirección IP/nombre de host y número de puerto como mínimo).

También debe crear activadores en todas las tablas y eventos sobre los que desea enviar notificaciones.

También crearía un procedimiento almacenado o una función que reciba los datos modificados o el hecho de que se haya cambiado cierta tabla de los activadores, verifique la tabla de suscripción, cree el mensaje STOMP y luego llame a la UDF compilada que envía el mensaje STOMP a todos los clientes suscritos. Los disparadores llamarían a este procedimiento almacenado o función en lugar de implementar todas estas funciones en cada uno de los disparadores.

Los clientes deben modificarse para procesar las notificaciones y realizar más acciones o solicitar al usuario.

Descargo de responsabilidad:no afirmo que esta sea la solución más adecuada y escalable para su caso particular. Sin embargo, de esta manera puede implementar un sistema de notificación por su cuenta evitando la necesidad de sondear su base de datos.