Mysql
 sql >> база данни >  >> RDS >> Mysql

Слушайте промените в базата данни в MySQL

Е, не е напълно невъзможно да се уведомят клиентите за промени, направени в базата данни, въпреки че няма вградено решение за това.

В mysql можете да създавате компилирани потребителски дефинирани функции (UDF) в C/C++. Те могат да разширят функционалността на mysql по какъвто и да е начин - като например изпращане на съобщения по мрежата. Можете да създадете свой собствен UDF или да използвате библиотеки, налични на mysqludf.org за изпращане на съобщения по мрежата. Можете да започнете с използването на библиотеката STOMP на mysqludf.org, за да изпратите STOMP съобщения. Тъй като STOMP е езиково агностичен, можете да го използвате и от .NET среда, вижте тази SO тема (ако потърсите в интернет .net STOMP сървър, тогава ще намерите още примери).

Клиентското приложение трябва да внедри STOMP сървър, който може да получава STOMP съобщенията от сървъра.

В базата данни трябва да създадете таблица за абонаменти, която съдържа информацията кой клиент се абонира за какви известия и как да се свърже с него (най-малко IP адрес/име на хост и номер на порт).

Трябва също така да създадете тригери за всички онези таблици и събития, за които искате да изпращате известия.

Също така бих създал съхранена процедура или функция, която получава модифицираните данни или факта, че дадена таблица е била променена от тригерите, проверява таблицата за абонамент, създава съобщението STOMP и след това извиква компилирания UDF, който изпраща съобщението STOMP до всички абонирани клиенти. Тригерите ще извикат тази съхранена процедура или функция, вместо да прилагат всички тези функции във всеки от тригерите.

Клиентите трябва да бъдат променени, за да обработват известията и да предприемат по-нататъшни действия или да подканят потребителя.

Disclaimer:Не твърдя, че това е най-адекватното и мащабируемо решение за вашия конкретен случай. Въпреки това, по този начин можете сами да внедрите система за уведомяване, избягвайки необходимостта да проверявате вашата база данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql:използвайте SET или много колони?

  2. MySQL родител -> дъщерна заявка

  3. MySQL SELECT DISTINCT множество колони

  4. Как да съхранявате .pdf файлове в MySQL като BLOB с помощта на PHP?

  5. Откриване дали СТАРА стойност не е равна на НОВА стойност и СТАРА стойност е НУЛВА