2009-08-12 15 views
0

在我們的項目中,我們想使用高速緩存依賴關係。經過一番搜索,我發現它只是用於Sql Server,我們應該爲它編寫自己的高速緩存類。有人試過以前是什麼?對Oracle表設置依賴關係的最簡單方法是什麼?我們使用Oracle 11g和.net 2008,感謝幫助如何設置依賴關係到Oracle數據表

回答

1

Oracle允許您使用dbms_alert package實現通知方案。如果谷歌DBMS_ALERT,你會發現許多網頁給你如何使用它的例子,但基本上它涉及到3件事情:

  1. 你叫dbms_alert.raise(與你選擇的標籤),當你想客戶端將被通知更改(例如,在插入/更新/刪除您需要緩存依賴項的表的觸發器中)。

  2. 客戶端將保持一個連接,它們已經調用了dbms_alert.register函數(註冊了特定的標籤)。

  3. 在任何時候,客戶端都可以調用dbms_alert.wait或.waitany;該函數將會阻塞(或者您可以提供超時),直到警報提出。對於您的情況,您可以在需要顯示您正在監控的數據之前立即通過短暫超時呼叫waitany。

等待函數運行良好 - 您不需要不斷地進行輪詢,除非您需要知道第二件事情已經改變。相反,當你準備使用你的緩存數據來確保它是最新的時,你可以檢查它們。另外,客戶在提交他們提交的事務之前不會收到通知。

dbms_alert的最大侷限性是隻有一個事務可以一次引發一個未提交的特定標籤警報。換句話說,如果事務A引發警報「foo」,那麼事務B將在引發「foo」時阻止,直到A回滾或提交,所以在可能需要很長時間的事務中使用警報通常不是一個好主意(除非阻止其他用戶是設計的一部分)。另外,如上所述,客戶端需要保持將用於檢查通知的連接。這可以是用於執行任何其他數據庫活動的相同連接,但是如果您正在編寫一個執行大量連接池/共享的應用程序,則需要有一個工具來保存連接需要保持緩存一致的時間長度。