Sql-Server

使用 MySQL 或 MSSQL 實時或接近實時

  • November 24, 2016

我在一家使用不同數據庫的初創公司工作,其中包括 MySQL(v4/5)和 MSSQL(2014 年及更早版本)。我們迎合不同的客戶來執行不同的數據庫。目前我們有一個 Java 程序連接到數據庫,然後將數據推送到 API - 我們接入數據庫。我們希望升級系統以對 API 進行實時更新,然後在使用 MySQL 或 MSSQL 數據庫設計實時更新時陷入了停頓。

其中一位開發人員正在推動在任一數據庫中使用觸發器來執行外部命令(也許是我們的 java 程序),該命令將啟動對 API 的推送。有點類似於 Rethink 等一些 NoSQL 數據庫。另一個開發人員反對觸發器,並提議更頻繁地輪詢數據庫,這不會提供實時,但會非常接近實時。

我搜尋了一段時間以尋找 SQL 實時解決方案,但無法找到任何具有支持任一方法的案例和範例的可靠讀取。所以我的問題是:

  • 像 MySQL 或 MSSQL 那樣頻繁輪詢數據庫引擎是否可行?我說的是 10 或 30 秒的輪詢。數據庫通常最多從 3-4 個客戶端獲取流量,並且在我們感興趣的表中大約有 20-40k 條記錄。所以我們將添加另一個積極輪詢的客戶端。
  • 有沒有人遇到過使用觸發器呼叫外部命令的實際負面案例?我們不會使用它們來保證完整性和一致性,在我們的案例中也不是什麼大問題(確實如此,但有一些迴旋餘地)。

我還不是 DBA 或經驗豐富的開發人員。剛從 CS 大學畢業,有一些經驗。我們所有人都是這樣,所以我擔心這種缺乏知識可能會在以後對客戶產生反作用。

我的觀點是,在你的情況下輪詢(10 秒對我來說可以)比觸發解決方案更好。觸發器與您的交易密切相關,可能會導致許多難以解決的意外問題。就個人而言,我從來沒有使用trigger來呼叫外部應用程序(如果應用程序失敗,啟動時間長,卡住了怎麼辦?)

更好(但更困難的解決方案)可以使用服務代理與外部應用程序互動。

引用自:https://dba.stackexchange.com/questions/156302