星期五, 10月 23, 2009

記憶體資料庫的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,多年出問題的機會很微,但對大公司,以上的解決方案是不可少,當然以上系統會複雜了很多,增加了開發和維護難度.