web-dev-qa-db-fra.com

Comment obtenir des notifications en temps réel, lorsqu'un changement de base de données (insertion, mise à jour, suppression) se produit?

Je crée un tableau de bord qui devrait surveiller une table de base de données. Je n'ai qu'un accès à la base de données (pas de couche d'application). Le tableau est assez volumineux (10 millions de lignes), mais ne change pas rapidement (100 insertions/mises à jour par minute)

Comment savoir si la table a changé? J'essaierais de toucher la base de données chaque seconde, mais cela semble être une approche par force brute ...

Bases de données: MySQL/Postgres

13
Kiril

Vous pouvez utiliser des déclencheurs.

CREATE TRIGGER notifyMe
ON table1
AFTER INSERT, UPDATE, DELETE 
AS
   EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DB AutoMailer',
        @recipients = '[email protected]',
        @body = 'The DB has changed',
        @subject = 'DB Change';
GO
9
stechray

Pour PostgreSQL, je connais un moyen d'obtenir une notification de la base de données quand une ligne change.

  1. utilisez le déclencheur lorsque l'insertion/la mise à jour/la suppression se produit.
  2. lorsqu'un événement se produit, envoyez une notification à un socket client.
  3. assurez-vous que votre application dispose d'un client sur le serveur.
  4. votre application recevra alors une notification.

Vous pouvez voir mon code ou documentation de PostgreSQL .

Il semble que la notification ne soit pas fiable, mais au moins cela fonctionne pour moi.

3
user275831