2

两个应用程序使用同一个 MSSQL 数据库。

我的应用程序将sqlalchemypymssql一起使用,并且希望在另一个应用程序将行添加到特定表时收到通知。

这样做的正确方法是什么?

4

1 回答 1

1

让我们称您的应用程序为“消费者”,而另一个应用程序为“生产者”。

有几种方法,最适合的方法取决于您期望的记录、生产者和消费者的数量。

  1. 对于少量记录、生产者和消费者实例,您可以将“ack”字段添加到表中,并将其false作为默认值。新条目应将此字段设置为 false,以便其他应用程序在处理新条目后可以将“ack”设置为 true。
  2. 您可以将表用作队列,其中生产者实例插入新记录,消费者实例在复制到最终目标表后删除记录。
  3. 为了获得最大的可扩展性,您可以使用AMQP之类的东西来管理消费者和生产者之间的通信

请注意,任何涉及轮询数据库以进行更改的算法都有可能对底层 DBMS 造成沉重负担。

[更新]

货车的建议:

只是为了不完全的可能性:您还可以使用 AFTER INSERT 触发器将新插入/更新行的标志或 TableName 和 PrimaryKey 存储在某个帮助表中,您的 SA 应用程序将定期轮询这些表。但是,要小心,因为来自 SA 的插入也会触发触发器。–面包车

于 2012-07-31T06:01:06.293 回答