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