2

是否有可能聽關係數據庫更新?例如,我的Web應用程序想通過Comet技術向客戶端發送數據更新。我可以讓程序定期輪詢數據庫,但這不是高性能和可擴展的。是否有可能聽關係數據庫更新?

如果應用程序可以引用數據庫的「事件處理程序」,則應用程序可以在每次更新給定的數據庫表數據時獲取通知。這聽起來更有希望,但我沒有找到任何具體的例子。這是聽者模式。

常見的關係型數據庫是否支持這種功能?

回答

1

這絕對是非標準的,所以一般來說答案是否定的。一些數據庫(Oracle,SQL Server)提出了專有解決方案(就像其他很多情況一樣 - 在某些情況下,SQL標準嚴重受限)。

儘管如此,它仍然是輪詢。抱歉。數據庫無法將事件轉發給應用程序。

在SQL Server的情況下,更改通知將成爲SQL SERVER上消息隊列中的條目(使用SQL Server消息代理),並且仍然必須輪詢隊列。

也就是說,可以使用「長輪詢」 - 您啓動一個分離線程,請求數據庫進行下一個更改....阻塞(等待)直到它發生。

使用語法的

WAITFOR (RECEIVE * FROM MyQueue); 

風格。該請求將阻塞,直到基本上收到某些東西。

現在,如果你使用像MySQL這樣的「通用」數據庫 - 我認爲你已經完成了。如:不支持。這絕對是一個更高端的企業形象。

相關問題