Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Überwachen Sie Datenbankänderungen in MySQL

Nun, es ist nicht ganz unmöglich, Clients über Änderungen an der Datenbank zu informieren, obwohl es dafür keine integrierte Lösung gibt.

In mysql können Sie kompilierte benutzerdefinierte Funktionen (UDFs) in C/C++ erstellen. Diese können die Funktionalität von mysql so ziemlich beliebig erweitern, wie Sie es möchten – wie etwa das Versenden von Nachrichten über das Netzwerk. Sie können Ihr eigenes UDF erstellen oder Bibliotheken verwenden, die auf mysqludf.org verfügbar sind um Nachrichten über das Netzwerk zu senden. Sie könnten damit beginnen, die STOMP-Bibliothek auf mysqludf.org zu verwenden, um STOMP zu senden Mitteilungen. Da STOMP sprachunabhängig ist, können Sie es auch in der .NET-Umgebung verwenden, siehe dieses SO-Thema (Wenn Sie im Internet nach .net STOMP-Server suchen, finden Sie weitere Beispiele).

Die Client-Anwendung muss einen STOMP-Server implementieren, der die STOMP-Nachrichten vom Server empfangen kann.

In der Datenbank müssen Sie eine Abonnementtabelle erstellen, die die Informationen enthält, welcher Client welche Benachrichtigungen abonniert und wie er sich damit verbindet (mindestens IP-Adresse / Hostname und Portnummer).

Außerdem müssen Sie Trigger für alle Tabellen und Ereignisse erstellen, über die Sie Benachrichtigungen senden möchten.

Ich würde auch eine gespeicherte Prozedur oder Funktion erstellen, die die geänderten Daten oder die Tatsache, dass eine bestimmte Tabelle von den Triggern geändert wurde, empfängt, die Abonnementtabelle überprüft, die STOMP-Nachricht erstellt und dann die kompilierte UDF aufruft, die die STOMP-Nachricht an alle sendet abonnierte Kunden. Die Trigger würden diese gespeicherte Prozedur oder Funktion aufrufen, anstatt all diese Funktionen in jedem der Trigger zu implementieren.

Die Clients müssen geändert werden, um die Benachrichtigungen zu verarbeiten und weitere Maßnahmen zu ergreifen oder den Benutzer zu benachrichtigen.

Haftungsausschluss:Ich behaupte nicht, dass dies die geeignetste und skalierbarste Lösung für Ihren speziellen Fall ist. Auf diese Weise können Sie jedoch selbst ein Benachrichtigungssystem implementieren, ohne Ihre Datenbank abzufragen.