分佈式數據庫中數據同步

分佈式數據庫系統已不爲大家陌生。該方案中描述了一個典型的分佈式數據庫系統,主要由幾個部分組成: 數據中心、遠程數據庫、遠程數據庫與數據中心之間的數據交換。


從運行狀態來看,分佈式數據庫系統又可分爲“常連接”和“偶連接”兩大類。顧名思義,“常連接”狀態下的分佈式數據庫系統是指數據中心與遠程數據庫長期保持連通狀態的部署環境。一般來說,這種系統對數據的實時性要求高,需要在實時或者近乎實時(比如秒級)的條件下保持數據中心與遠程數據庫的數據一致性。例如,全國鐵路客票系統採用的多級分佈式數據庫系統中各遠程數據庫與數據中心的數據之間就需要實現接近實時的數據複製。


本方案中提到的是“偶連接”環境下的分佈式數據庫系統。該系統允許數據交換有一定延遲。通常,各遠程數據庫是數據中心的一個數據分區(即數據中心的一部分數據),數據中心與各遠程數據庫在平時不保持連接狀態,且數據中心與各遠程數據庫均可能有數據變更。在需要的時候,各遠程數據庫與數據中心通過數據交換模塊連接,交換必要的數據。下面針對組成該環境下分佈式數據庫系統的兩個重要部分(遠程數據庫、數據交換)來闡述如何考慮選擇合適的解決方案。


遠程數據庫


正如上面提到的,各遠程數據庫是數據中心的一個數據分區,運行在各個遠程站點上。對於遠程數據庫,我們着重要考慮以下幾個方面的問題:


1. 免維護。對類似於本方案中提出的運行在船舶上的各遠程數據庫來說,零維護是至關重要的。如果每個船舶都無需配備IT人員或DBA,這將節省大量成本。


2. 合理資源佔用情況下的高性能。對於遠程數據庫來說,它一般不會像數據中心那樣存儲着海量數據,同時它的運算環境也遠不如數據中心那樣強大。很多遠程數據庫甚至部署在普通的PC上,而且有的遠程應用並非需要多用戶環境。這就要求各遠程數據庫在資源有限的環境下合理利用資源,規避可能造成的資源浪費,並且要獲取企業級數據庫的強大性能。


3. 安全性。數據安全是每個企業建立信息系統時首要考慮的問題。


數據庫之間的數據交換


各遠程數據庫與數據中心的數據交換有以下幾個方面的問題需要考慮:


1. 雙向同步。一般情況下,不僅遠程數據庫的數據需要上傳到數據中心,數據中心也可能有一些數據需要下載到各遠程數據庫中去。當然,在數據下載的過程中會涉及到如何調度,把不同的數據下載到不同的遠程數據庫的問題,即數據如何分區。


2. 異構數據庫支持。我們需要考慮數據中心與各遠程數據庫是非同構數據庫的情況。例如,數據中心運行着Oracle,而各遠程數據庫由於種種原因並不想採用Oracle,因而也需要進行數據同步的情況。


3. 增量同步。當系統運行了一段時間以後,數據中心和各遠程數據庫的數據都會發生膨脹,爲了真正縮短網絡連接時間,需要對數據進行摘取,選擇自上次同步以來未同步的數據,組織它們進行上傳下載。


4. 數據一致性。對於1:N的雙向數據傳輸來說,要控制數據一致性並非一件易事。例如,數據中心將同一條數據下發到了兩個不同的遠程數據庫,這兩個遠程數據庫都對該數據進行了修改。繼而,它們分別將數據同步到中心數據庫去。那麼,在這種情況下,我們如何去判斷哪一條數據是真正有效的數據就成了問題。另外,數據一致性還體現在對傳輸失敗的處理上。由於種種原因,我們並不能保證傳輸的過程不會失敗。假設傳輸失敗後,失敗的數據該如何處理成了重要的問題。


5. 安全性。前面已經提及各遠程數據庫上的數據需要進行必要的保護,當然在數據中心與各遠程數據庫的數據傳輸鏈路上也必須對數據進行保護。只有安全的數據中心、安全的遠程數據庫再加上安全的數據交換渠道才能構成一個安全的分佈式數據庫系統

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章