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

Lyt til databaseændringer i MySQL

Nå, det er ikke helt umuligt at give kunderne besked om ændringer i databasen, selvom der ikke er nogen indbygget løsning til dette.

I mysql kan du oprette kompilerede brugerdefinerede funktioner (UDF'er) i C/C++. Disse kan udvide funktionaliteten af ​​mysql stort set som du ønsker det - såsom at sende beskeder over netværket. Du kan oprette din egen UDF eller bruge biblioteker, der er tilgængelige på mysqludf.org at sende beskeder over netværket. Du kan starte med at bruge STOMP-biblioteket på mysqludf.org til at sende STOMP Beskeder. Da STOMP er sprogagnostisk, kan du også bruge det fra .NET-miljøet, se dette SO-emne (hvis du søger på internettet efter .net STOMP-server, så finder du flere eksempler).

Klientapplikationen skal implementere en STOMP-server, der er i stand til at modtage STOMP-meddelelserne fra serveren.

I databasen skal du oprette en abonnementstabel, der indeholder de oplysninger, hvilken klient abonnerer på, hvilke notifikationer og hvordan man forbinder til den (IP-adresse/værtsnavn og portnummer som minimum).

Du skal også oprette udløsere på alle de borde og begivenheder, som du vil sende meddelelser om.

Jeg ville også oprette en lagret procedure eller funktion, der modtager de ændrede data eller det faktum, at en bestemt tabel er blevet ændret fra triggerne, kontrollerer abonnementstabellen, opretter STOMP-meddelelsen og kalder derefter den kompilerede UDF, der sender STOMP-meddelelsen til alle abonnerede kunder. Triggerne ville kalde denne lagrede procedure eller funktion i stedet for at implementere alle disse funktioner i hver af triggerne.

Klienterne skal modificeres for at behandle meddelelserne og foretage yderligere handlinger eller bede brugeren.

Ansvarsfraskrivelse:Jeg påstår ikke, at dette er den mest passende og skalerbare løsning til netop din sag. Men på denne måde kan du implementere et meddelelsessystem på egen hånd og undgå behovet for at polle din database.




  1. Drop database return Fejl ved droppe database fejlnr.:66 i MySQL

  2. Database høj tilgængelighed for Camunda BPM ved hjælp af MySQL eller MariaDB Galera Cluster

  3. Hvornår skal man bruge mysql_real_escape_string()

  4. Caching med php-fil