sql >> データベース >  >> RDS >> Mysql

MySQLでデータベースの変更を聞く

    組み込みのソリューションはありませんが、データベースに加えられた変更をクライアントに通知することは完全に不可能ではありません。

    mysqlでは、C / C ++でコンパイル済みのユーザー定義関数(UDF)を作成できます。これらは、ネットワークを介したメッセージの送信など、mysqlの機能をほぼすべての方法で拡張できます。独自のUDFを作成するか、mysqludf.org で利用可能なライブラリを使用できます。 ネットワーク経由でメッセージを送信します。 mysqludf.orgのSTOMPライブラリを使用して、STOMP を送信することから始めることができます。 メッセージ。 STOMPは言語に依存しないため、.NET環境からも使用できます。このSOトピック (インターネットで.net STOMPサーバーを検索すると、さらに多くの例が見つかります。)

    クライアントアプリケーションは、サーバーからSTOMPメッセージを受信できるSTOMPサーバーを実装する必要があります。

    データベースに、どのクライアントがどの通知をサブスクライブし、どのように接続するか(少なくともIPアドレス/ホスト名とポート番号)を保持するサブスクリプションテーブルを作成する必要があります。

    また、通知を送信するすべてのテーブルとイベントにトリガーを作成する必要があります。

    また、変更されたデータまたは特定のテーブルがトリガーから変更されたという事実を受け取り、サブスクリプションテーブルをチェックし、STOMPメッセージを作成してから、コンパイルされたUDFを呼び出してSTOMPメッセージをすべてのサブスクライブされたクライアント。トリガーは、各トリガーにこれらすべての機能を実装する代わりに、このストアドプロシージャまたは関数を呼び出します。

    通知を処理し、さらにアクションを実行したり、ユーザーにプロンプ​​トを表示したりするには、クライアントを変更する必要があります。

    免責事項:これが特定のケースに最も適切でスケーラブルなソリューションであるとは言いません。ただし、この方法では、データベースをポーリングする必要がなく、通知システムを独自に実装できます。




    1. selectクエリは、Parameters.AddWithValueを使用するパラメータでは機能しません

    2. MySQL照合:latin1_swedish_ci対utf8_general_ci

    3. クエリのINSERT/UPDATEの完全性を検出するNode.jsMYSQL?

    4. 結合されたデータをクエリ結果に追加する