web-dev-qa-db-ja.com

データベースの変更(挿入、更新、削除)が発生したときにリアルタイム通知を取得するにはどうすればよいですか?

データベーステーブルを監視するダッシュボードを作成しています。私はデータベースにアクセスできます(アプリケーション層はありません)。テーブルはかなり大きい(1,000万行)が、急速に変化しない(1分あたり100挿入/更新)

テーブルが変更されたかどうかを確認するにはどうすればよいですか?私は毎秒データベースにアクセスしようとしますが、これはブルートフォースアプローチのようです...

データベース:MySQL/Postgres

13
Kiril

トリガーを使用できます。

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

PostgreSQLの場合、行が変更されたときにデータベースから通知を受け取る方法を知っています。

  1. 挿入/更新/削除が発生したときにトリガーを使用します。
  2. イベントが発生すると、クライアントソケットに通知を送信します。
  3. アプリにサーバーへのクライアントがあることを確認してください。
  4. その後、アプリは通知を受け取ります。

my code または PostgreSQLのドキュメント を参照してください。

通知は信頼できる通知ではないようですが、少なくとも私には有効です。

3
user275831