sql >> Databasteknik >  >> RDS >> Mysql

Lyssna på databasändringar i MySQL

Tja, det är inte helt omöjligt att meddela kunder om ändringar som gjorts i databasen, även om det inte finns någon inbyggd lösning för detta.

I mysql kan du skapa kompilerade användardefinierade funktioner (UDF) i C/C++. Dessa kan utöka funktionaliteten av mysql i stort sett hur du vill - som att skicka meddelanden över nätverket. Du kan skapa din egen UDF eller använda bibliotek som är tillgängliga på mysqludf.org för att skicka meddelanden över nätverket. Du kan börja med att använda STOMP-biblioteket på mysqludf.org för att skicka STOMP meddelanden. Eftersom STOMP är språkagnostisk kan du också använda det från .NET-miljön, se det här SO-ämnet (om du söker på Internet efter .net STOMP-server, så hittar du fler exempel).

Klientapplikationen måste implementera en STOMP-server som kan ta emot STOMP-meddelanden från servern.

I databasen måste du skapa en prenumerationstabell som innehåller informationen vilken klient prenumererar på vilka aviseringar och hur man ansluter till den (minst IP-adress/värdnamn och portnummer).

Du måste också skapa utlösare för alla de tabeller och händelser som du vill skicka meddelanden om.

Jag skulle också skapa en lagrad procedur eller funktion som tar emot modifierad data eller det faktum att en viss tabell har ändrats från triggers, kontrollerar prenumerationstabellen, skapar STOMP-meddelandet och sedan anropar den kompilerade UDF som skickar STOMP-meddelandet till alla prenumererade kunder. Utlösarna skulle anropa denna lagrade procedur eller funktion istället för att implementera alla dessa funktioner i var och en av utlösarna.

Klienterna måste modifieras för att bearbeta aviseringarna och vidta ytterligare åtgärder eller uppmana användaren.

Friskrivningsklausul:Jag hävdar inte att detta är den mest adekvata och skalbara lösningen för just ditt fall. Men på detta sätt kan du implementera ett meddelandesystem på egen hand och undvika behovet av att polla din databas.




  1. Hur analyserar jag objektdata från MySQL-databasen med PHP PDO?

  2. CAST och IsNumeric

  3. Java String - Hämtar andra språks tecken från mysql - Är data komplett?

  4. Hur man tar bort lagrad procedur i MySQL