Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ouça as alterações do banco de dados no MySQL


Bem, não é totalmente impossível notificar os clientes sobre as alterações feitas no banco de dados, embora não haja uma solução integrada para isso.

No mysql você pode criar funções definidas pelo usuário (UDFs) compiladas em C/C++. Eles podem estender a funcionalidade do mysql praticamente da maneira que você quiser - como enviar mensagens pela rede. Você pode criar sua própria UDF ou usar bibliotecas disponíveis em mysqludf.org para enviar mensagens pela rede. Você pode começar usando a biblioteca STOMP em mysqludf.org para enviar STOMP mensagens. Como o STOMP é independente de linguagem, você também pode usá-lo no ambiente .NET, consulte este tópico SO (se pesquisar na Internet pelo servidor .net STOMP, você encontrará mais exemplos).

O aplicativo cliente precisa implementar um servidor STOMP que seja capaz de receber as mensagens STOMP do servidor.

No banco de dados, você precisa criar uma tabela de assinaturas que contenha as informações de qual cliente assina para quais notificações e como se conectar a ele (endereço IP / nome do host e número da porta no mínimo).

Você também precisa criar gatilhos em todas as tabelas e eventos sobre os quais deseja enviar notificações.

Eu também criaria uma stored procedure ou função que recebesse os dados modificados ou o fato de determinada tabela ter sido alterada dos triggers, verifica a tabela de subscrição, cria a mensagem STOMP e então chama a UDF compilada que envia a mensagem STOMP para todos os clientes inscritos. Os gatilhos chamariam esse procedimento armazenado ou função em vez de implementar todas essas funcionalidades em cada um dos gatilhos.

Os clientes precisam ser modificados para processar as notificações e realizar outras ações ou solicitar ao usuário.

Isenção de responsabilidade:não afirmo que esta seja a solução mais adequada e escalável para o seu caso particular. No entanto, desta forma, você pode implementar um sistema de notificação por conta própria, evitando a necessidade de pesquisar seu banco de dados.