2009年10月22日 星期四

記憶體資料庫的Hot Standy原理

今天收到iThome對記憶體資料庫的報導寄來的雜誌,看到記憶體資料庫的Hot Standy原理,和我在超級市場電腦化計劃書所想的很接近.


超市使用值分咭,不能死機,資料不能有任何損失和錯誤.當Active Server無法處理Transaction時,Standby Server要自動去處理,如下圖:

Picture

MemDB的網絡系統是用Client-Server,應用程式是Client,直接Send Reqeust到Server,而我設計Request只有SELECT,LIST ,REPORT, INSERT, UPDATE和DELETE,前三個不會有任何update,也不會有任何disk access,可以分別在Active或Standby處理.

後三個Request需要同時update Ative和Standby,當Active Server接到這些Request,首先pass這request到Standby執行,然後由Active執行,在正常執行之下,兩個db是consistent,否則要處理error handlling.

要做以上error handling,一個方法是Active和Standby都儲存一個version number,每個update request,它們的version number是一致.有以下error case要處理.

1) Standby無法回應,這個case比較簡單,Active可繼續正常連作,並回報給技術人員.

2) Active無法回應,Standby會嘗試連接Active,如果失敗,Standby轉為Active,並回報給技術人員.Client無法連接到Active,會自動連到Standby.

當技術人員接到報告,可於非使用時間檢查和修正,因為還有一部Server可以運作,所以有更多時間讓技術人員去解決問題.

現時MemDB有很多客戶都是使用一個Server,多年出問題的機會很微,但對大公司,以上的解決方案是不可少,當然以上系統會複雜了很多,增加了開發和維護難度.

3 則留言:

  1. 如果Active因某些原因暫時無法回應, 但Standby轉為Active後,Active卻突然回復正常...
    會不會變成Active-Active ?

    回覆刪除
  2. 飛飛 :
    如果Active因某些原因暫時無法回應, 但Standby轉為Active後,Active卻突然回復正常...
    會不會變成Active-Active ?

    所以有version control, active會問standby取version, 如果不consistent, 就不能使用了.

    回覆刪除
  3. alex :
    其實使用smartcard,就可以offline處理,成本也不貴。個人經驗話我知,呢d同步處理,好容易玩死自己。

    除了因要儲值功能, stand-by都有其value, 不過同意你的說法, 好容易玩死自己, 所以要客戶投資才會開發.

    回覆刪除