2 つのアプリケーションが同じ MSSQL データベースを使用しています。
私のアプリケーションは、 pymssqlでsqlalchemyを使用しており、別のアプリケーションによって特定のテーブルに行が追加されたときに通知を受け取りたいと考えています。
これを行う正しい方法は何ですか?
2 つのアプリケーションが同じ MSSQL データベースを使用しています。
私のアプリケーションは、 pymssqlでsqlalchemyを使用しており、別のアプリケーションによって特定のテーブルに行が追加されたときに通知を受け取りたいと考えています。
これを行う正しい方法は何ですか?
あなたのアプリケーションを「消費者」と呼び、他のアプリケーションを「生産者」と呼びましょう。
いくつかのアプローチがあります。最適な方法は、予想されるレコード、プロデューサー、およびコンシューマーの数によって異なります。
false
デフォルト値として「ack」フィールドをテーブルに追加できます。新しいエントリを処理した後、他のアプリケーションが「ack」を true に設定できるように、新しいエントリはこのフィールドを false に設定する必要があります。データベースの変更をポーリングするアルゴリズムは、基になる DBMS に大きな負荷をかける可能性があることに注意してください。
[アップデート]
バンからの提案:
AFTER INSERT トリガーを使用して、新しく挿入/更新された行のフラグまたは TableName と PrimaryKey を、SA アプリケーションが定期的にポーリングするヘルパー テーブルに格納することもできます。ただし、SA からの挿入もトリガーになるので注意してください。–バン