sql >> Database >  >> RDS >> Mysql

Luister naar databasewijzigingen in MySQL

Welnu, het is niet helemaal onmogelijk om klanten op de hoogte te stellen van wijzigingen in de database, hoewel hier geen ingebouwde oplossing voor is.

In mysql kunt u gecompileerde, door de gebruiker gedefinieerde functies (UDF's) maken in C/C++. Deze kunnen de functionaliteit van mysql vrijwel op elke gewenste manier uitbreiden, zoals het verzenden van berichten via het netwerk. U kunt uw eigen UDF maken of bibliotheken gebruiken die beschikbaar zijn op mysqludf.org om berichten over het netwerk te verzenden. U kunt beginnen met het gebruik van de STOMP-bibliotheek op mysqludf.org om STOMP te verzenden berichten. Aangezien STOMP taalonafhankelijk is, kunt u het ook vanuit een .NET-omgeving gebruiken, zie dit SO-onderwerp (als u op internet zoekt naar .net STOMP-server, dan vindt u meer voorbeelden).

De clienttoepassing moet een STOMP-server implementeren die de STOMP-berichten van de server kan ontvangen.

In de database moet u een abonnementstabel maken die de informatie bevat welke klant zich abonneert op welke meldingen en hoe u er verbinding mee kunt maken (minimaal IP-adres / hostnaam en poortnummer).

Je moet ook triggers maken voor al die tafels en evenementen waarover je meldingen wilt sturen.

Ik zou ook een opgeslagen procedure of functie maken die de gewijzigde gegevens ontvangt of het feit dat een bepaalde tabel is gewijzigd van de triggers, de abonnementstabel controleert, het STOMP-bericht maakt en vervolgens de gecompileerde UDF aanroept die het STOMP-bericht naar alle geabonneerde klanten. De triggers zouden deze opgeslagen procedure of functie aanroepen in plaats van al deze functionaliteit in elk van de triggers te implementeren.

De clients moeten worden aangepast om de meldingen te verwerken en verdere actie te ondernemen of de gebruiker te vragen.

Disclaimer:ik beweer niet dat dit de meest adequate en schaalbare oplossing is voor uw specifieke geval. Op deze manier kunt u echter zelf een meldingssysteem implementeren, zodat u uw database niet hoeft te pollen.




  1. Is er een manier om een ​​MySQL 5.7-tabel te vullen met gegevens uit een json-bestand met regeleinden op Win7?

  2. Hoe kan ik een string converteren naar een float in mysql?

  3. Retourneren geaggregeerde MySQL-functies altijd een enkele rij?

  4. Hoe stel ik de huidige datum in op de MySQL-datumkolom vanuit Java?