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

Javaキャッシュを更新するPostgresトリガー

    MyBatisと話すことはできませんが、PostgreSQLにはパブリッシュ/サブスクライブシステムが組み込まれているため、ハッカーを大幅に減らすことができます。

    まず、widgetsにトリガーを設定します これは、すべての挿入、更新、および削除操作で実行されます。主キーと NOTIFYを抽出してもらいます widgets_changed, id 。 (まあ、PL / pgSQLからは、おそらくPERFORM pg_notify(...)が必要でしょう。 。)PostgreSQLは、トランザクションがコミットされた場合に通知をブロードキャストし、通知と対応するデータの変更の両方を他の接続から見えるようにします。

    クライアントでは、このマップを最新の状態に保つための専用のスレッドを実行する必要があります。 PostgreSQLに接続します。 LISTEN widgets_changed 通知のキューイングを開始するには、SELECT * FROM widgets マップにデータを入力し、通知が到着するのを待ちます。 (通知の確認には、明らかにJDBCドライバーのポーリングが含まれます 、それはひどいですが、あなたが思うほど悪くはありません。 PgNotificationPoller を参照してください 具体的な実装については。)通知が表示されたら、示されたレコードを検索し、マップを更新します。 LISTENすることが重要であることに注意してください 最初のSELECT *の前 、レコードはSELECT *間で変更される可能性があるため およびLISTEN

    このアプローチでは、PostgreSQLがアプリケーションについて何も知る必要はありません。通知を送信するだけです。残りはアプリケーションが行います。シェルスクリプト、HTTP、コールバックがないため、データベースを再構成しなくても、アプリケーションを再構成/再デプロイできます。これは単なるデータベースであり、特別な複雑さを伴うことなく、バックアップ、復元、複製などを行うことができます。同様に、アプリケーションに特別な複雑さはありません。必要なのは、すでに持っているPostgreSQLへの接続だけです。




    1. Oracle Linux Automation Manager(別名「OracleAnsibleTower」)のインストール方法

    2. Mysqlは、左側が異なる行で右側が同じ行の2つのテーブルを結合します

    3. PL/pgsqlでEXECUTEを使用して汎用トリガーからNEW。*を挿入する

    4. DbCommandとパラメーター化されたSQL、ORACLEとSQL Server