淺談數據庫同步
譯文【51CTO.com快譯】顧名思義,數據庫同步(Database synchronization)是指在兩個或多個數據庫之間建立數據的一致性,并且能夠自動相互復制數據記錄的更改。隨著時間的推移和信息量的增多,此類數據的協調工作應當被持續執行。
從實現機制上說,最簡單的操作方式莫過于將數據從源數據庫(主數據庫)推送到目標數據庫(從數據庫)。當然,值得注意的是:同步必須基于主鍵(Primary Key)的約束。同時數據庫的結構應當包含有主鍵或唯一(主)索引,而絕不是復合型(composite)的。
通常,我們會在兩到多個數據庫之間持續如下類型的同步:
- 插入同步(Insert Synchronization)
- 更新同步(Update Synchronization)
- 刪除同步(Drop Synchronization)
- 混合同步(Mixed Synchronization)
數據庫插入同步
如果目標表中并不具有與源表相同主鍵值的適當記錄,那么源表需要將新的記錄自動傳輸到目標處。也就是說:在數據庫完成同步過程后,那些缺少的記錄將被插入到目標表的對應位置。
下圖展示了數據庫插入同步的具體過程:
數據庫更新同步
當源數據庫發生更改時,我們必須確保在目標數據庫中執行適當的更改。顯然,在同步之前,我們需要先比較兩個數據庫的記錄值,然后在目標表處替換需要更改的記錄,并在兩個表之間建立合適的標識,以標記更新數據庫的操作已完成。
下圖展示了數據庫更新同步的具體過程:
數據庫刪除同步
如果某些數據記錄已經從源數據庫中被刪除,那么其對應的記錄也需要及時從目標數據庫中被移除。也就是說,通過檢查“刪除同步選項(Drop-sync option)”,那些“滯留”在目標數據庫中的多余記錄會被及時刪除掉,以保障源數據庫與目標數據庫的存儲一致性。
下圖展示了數據庫刪除同步的具體過程:
數據庫混合同步
其實在實際應用中,上述三種同步操作從來不是孤立地存在著。為了保持兩個數據庫的相關性,我們必須在同一套操作中,對目標數據庫的對應行/列“打出”添加、更新、以及刪除的“組合拳”。
下圖展示了數據庫混合同步的具體過程:
在《跨數據庫轉換和同步軟件》(請參見-- https://dbconvert.com/)一文中,作者詳細介紹了如何在SQL Server、MySQL、Oracle、以及PostgreSQL等時下流行的本地數據庫之間,遷移與同步各類數據與記錄的操作。當然,此類方法也適用于AWS RDS/Aurora、Microsoft Azure SQL、以及Google Cloud SQL等云端數據庫平臺。
原標題:What Is Database Synchronization?,作者: Dmitry Narizhnykh
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】




























