0

SQLなどのデータベースがあり、サードパーティからデータベースにフィードを取得しています(毎回更新しています)。例のように、アプリケーションに通知を受け取る必要があります。

select * form table Bonus > 50%

Windows サービスを使用してすべてのデータベースをチェックするか、SQL に設定して SQL からアラートを受け取ることができますか? できるだけ早く通知を受け取る必要があるため、1 秒または 5 秒ごとにデータベースをチェックするのは大変です。

4

1 に答える 1

3

それはデータベースによって異なります。ほとんどすべてのデータベースは、データが変更されたときにトリガーを実行できますが、トリガー内のコードは通常 SQL (接続を開くことなどをサポートしていません) です。

Oracle のように、トリガーを許可し、Java コードも実行できるものもあります。ここでは、データベース内にソリューションを構築できます。

ただし、欠点があります。信号を送信できない場合はどうなりますか? トランザクション全体をロールバックする必要があります (これにより、他の比較的無関係なサービスが損なわれます。

したがって、通常の解決策は、問題のクエリを約 1 時間ごとに実行し、条件が満たされたときにシグナルを送信するコードを作成することです。

クエリが高価な場合は、2 つを混在させることができます: 何かが変更された場合にのみ (トリガーを使用して) クエリを実行し、結果をテーブルに保存します (「何かが $timestamp で発生した」など)。最後のシグナル以降に更新がありました。

于 2012-02-23T11:50:39.573 に答える