Mysql
 sql >> Base de données >  >> RDS >> Mysql

Écouter les modifications de la base de données dans MySQL

Eh bien, il n'est pas totalement impossible d'informer les clients des modifications apportées à la base de données, bien qu'il n'y ait pas de solution intégrée pour cela.

Dans mysql, vous pouvez créer des fonctions définies par l'utilisateur (UDF) compilées en C/C++. Ceux-ci peuvent étendre les fonctionnalités de mysql à peu près comme vous le souhaitez - comme l'envoi de messages sur le réseau. Vous pouvez créer votre propre UDF ou utiliser les bibliothèques disponibles sur mysqludf.org pour envoyer des messages sur le réseau. Vous pouvez commencer par utiliser la bibliothèque STOMP sur mysqludf.org pour envoyer STOMP messages. Étant donné que STOMP est indépendant de la langue, vous pouvez également l'utiliser à partir de l'environnement .NET, voir ce sujet SO (si vous recherchez sur Internet le serveur .net STOMP, vous trouverez plus d'exemples).

L'application cliente doit implémenter un serveur STOMP capable de recevoir les messages STOMP du serveur.

Dans la base de données, vous devez créer une table d'abonnement qui contient les informations auxquelles le client s'abonne pour quelles notifications et comment s'y connecter (adresse IP / nom d'hôte et numéro de port au minimum).

Vous devez également créer des déclencheurs sur toutes les tables et tous les événements pour lesquels vous souhaitez envoyer des notifications.

Je créerais également une procédure stockée ou une fonction qui reçoit les données modifiées ou le fait que certaines tables ont été modifiées à partir des déclencheurs, vérifie la table d'abonnement, crée le message STOMP, puis appelle l'UDF compilé qui envoie le message STOMP à tous les clients abonnés. Les déclencheurs appelleraient cette procédure stockée ou cette fonction au lieu d'implémenter toutes ces fonctionnalités dans chacun des déclencheurs.

Les clients doivent être modifiés pour traiter les notifications et prendre d'autres mesures ou inviter l'utilisateur.

Avis de non-responsabilité :je ne prétends pas qu'il s'agisse de la solution la plus adéquate et la plus évolutive pour votre cas particulier. Cependant, de cette façon, vous pouvez mettre en place un système de notification par vous-même en évitant d'avoir à interroger votre base de données.