王站立,修 瑋
(朝陽師范高等??茖W(xué)校,遼寧朝陽122000)
【學(xué)術(shù)研究】
數(shù)據(jù)庫同步編程解決方案
王站立,修 瑋
(朝陽師范高等專科學(xué)校,遼寧朝陽122000)
在實(shí)現(xiàn)信息系統(tǒng)過程中,多個(gè)異地的數(shù)據(jù)庫需要實(shí)現(xiàn)相互同步.不同的數(shù)據(jù)庫系統(tǒng)根據(jù)本身規(guī)則提出的數(shù)據(jù)庫同步方案五花八門,而且約束繁雜.所以數(shù)據(jù)庫管理員可根據(jù)系統(tǒng)環(huán)境不同編程來實(shí)現(xiàn)數(shù)據(jù)庫同步.
數(shù)據(jù)庫同步;編程;解決方案
在信息化社會(huì)中,信息是進(jìn)行決策管理和科學(xué)研究的前提條件.?dāng)?shù)據(jù)庫是管理信息系統(tǒng)、決策支持系統(tǒng)、辦公自動(dòng)系統(tǒng)等各類信息系統(tǒng)的核心部分[1].在信息系統(tǒng)中,多個(gè)異地?cái)?shù)據(jù)庫服務(wù)器可能形成樹型的邏輯結(jié)構(gòu),即一個(gè)服務(wù)器只能有一個(gè)上級(jí)服務(wù)器,但可以有多個(gè)下級(jí)服務(wù)器,所以將需要同步的數(shù)據(jù)分為向上同步和向下同步.向上同步是指將本級(jí)服務(wù)器數(shù)據(jù)同步至上級(jí)(根節(jié)點(diǎn)方向)服務(wù)器中,而向下同步指將本級(jí)服務(wù)器數(shù)據(jù)同步至下級(jí)(葉子節(jié)點(diǎn)方向)服務(wù)器中.異地?cái)?shù)據(jù)庫同步已經(jīng)成為一個(gè)重要研究方向,下面以O(shè)racle數(shù)據(jù)庫系統(tǒng)為例,說明如何通過編程實(shí)現(xiàn)數(shù)據(jù)同步.
在實(shí)現(xiàn)過程中需要注意幾個(gè)事項(xiàng):首先,當(dāng)本級(jí)服務(wù)器同步數(shù)據(jù)到遠(yuǎn)程服務(wù)器后,遠(yuǎn)程服務(wù)器應(yīng)該避免再把同一數(shù)據(jù)同步回本級(jí)服務(wù)器,否則會(huì)造成死循環(huán);其次,本級(jí)服務(wù)器向遠(yuǎn)程同步過程中,對(duì)于當(dāng)前數(shù)據(jù)庫同一個(gè)表的數(shù)據(jù),可能需要同步至不同的遠(yuǎn)程服務(wù)器,而不是將表的全部數(shù)據(jù)同步至所有下級(jí)服務(wù)器[2].例如:將“人員信息表”中工作單位為遼寧地區(qū)的人員同步至沈陽服務(wù)器,將工作單位為吉林地區(qū)的人員同步至長(zhǎng)春服務(wù)器,這樣在向遠(yuǎn)程服務(wù)器同步時(shí),查詢需要同步的數(shù)據(jù)需要附加條件,并且需要指定將數(shù)據(jù)同步到哪個(gè)服務(wù)器.
考慮實(shí)現(xiàn)過程的復(fù)雜度,本文在同步過程中不考慮表結(jié)構(gòu)的不同,默認(rèn)為各個(gè)服務(wù)器中表結(jié)構(gòu)相同,而且僅同步表數(shù)據(jù),并不同步表結(jié)構(gòu).主要流程及步驟如下:
2.1 讀取同步控制信息表
表1為同步控制信息表,用來存儲(chǔ)控制實(shí)現(xiàn)同步線程(任務(wù))的啟動(dòng)、頻率等信息.同步線程中每間隔10 s(甚至更短時(shí)間)讀取本表信息,然后決定是否開啟一次同步過程.其中字段SynchInterval為同步線程的執(zhí)行頻率,數(shù)據(jù)庫管理員可根據(jù)網(wǎng)絡(luò)帶寬、數(shù)據(jù)庫性能等綜合因素酌情設(shè)置或修改.如果本表信息同時(shí)滿足以下條件那么啟動(dòng)同步過程,否則沒必要啟動(dòng)同步:(1)Enabled標(biāo)志為1(啟用);(2)LastSynchTime + SynchInterval <系統(tǒng)當(dāng)前時(shí)間,說明超過同步周期.
表1 同步控制信息表
字段名類型及寬度說明SynchIntervalint同步時(shí)間間隔,單位:s.LastSynchTimeTIMESTAMP最后同步時(shí)間.Enabledint啟用1,停用0.
2.2 遍歷遠(yuǎn)程服務(wù)器信息
遠(yuǎn)程服務(wù)器信息存儲(chǔ)于數(shù)據(jù)庫表(SYNCHSERVER)中,該表用來存儲(chǔ)各服務(wù)器基本配置信息,這些信息主要包括服務(wù)器的類型(向上同步還是向下同步)、服務(wù)器IP、服務(wù)器端口、同步數(shù)據(jù)庫的名稱、數(shù)據(jù)庫用戶名、數(shù)據(jù)庫密碼等.同步線程開啟后,根據(jù)服務(wù)器類型查詢服務(wù)器信息列表,對(duì)于列表中的每個(gè)服務(wù)器進(jìn)行連接,同步數(shù)據(jù)、斷開連接.
2.3 查詢當(dāng)前的遠(yuǎn)程服務(wù)器需要同步的表名及附加條件
確定當(dāng)前同步的遠(yuǎn)程服務(wù)器后,根據(jù)服務(wù)器ID查詢同步索引表(表2).表2存儲(chǔ)需要同步到對(duì)應(yīng)服務(wù)器的表名及附加條件.獲取表名即可查詢對(duì)應(yīng)表需要同步的數(shù)據(jù).而在查詢對(duì)應(yīng)表格數(shù)據(jù)時(shí)候附加查詢條件則很好解決了同一表格數(shù)據(jù)同步到不同遠(yuǎn)程服務(wù)器的問題.
表2 同步索引列表
字段名類型及寬度說明TableNameVarchar(50)同步表名稱(主鍵).ServerIDint同步服務(wù)器ID(主鍵).AppendWhereVarchar(200)同步時(shí)附加條件.默認(rèn)為"".
2.4 同步表數(shù)據(jù)
為了記錄同步狀態(tài),對(duì)于每一張需要同步數(shù)據(jù)的表,除了原有需求字段外,加如下三個(gè)字段(見表3).
其中,OPUP標(biāo)志向上同步時(shí)間,初始化可為NULL.向上同步本條數(shù)據(jù)后修改為系統(tǒng)當(dāng)前時(shí)間.OPDOWN為向下同步時(shí)間,使用方法同OPUP.OPCURR為本地操作記錄時(shí)間,更新記錄時(shí)需更新該字段為當(dāng)前系統(tǒng)時(shí)間.每次向上同步時(shí)可根據(jù)查詢條件(OPUP IS NULL OR OPUP< OPCURR) 檢索出滿足條件的記錄上傳.向下同步同理.如果需要同步的記錄過多而同步的頻率又過高則會(huì)增加服務(wù)器負(fù)擔(dān),建議每次同步部分?jǐn)?shù)據(jù)(例如,限制每次最多同步100條記錄).每張需要同步的表需要建立主索引,根據(jù)主索引來決定插入或更新限制到同步數(shù)據(jù)庫中.主索引字段不能使用自動(dòng)遞增方式.
表3 功能表
字段名類型說明……根據(jù)需要表結(jié)構(gòu)字段OPUPTIMESTAMP向上同步時(shí)間OPDOWNTIMESTAMP向下同步時(shí)間OPCURRTIMESTAMP本地操作時(shí)間
具體實(shí)現(xiàn)流程如圖1:
利用編程的方法解決數(shù)據(jù)庫同步的方案優(yōu)點(diǎn)明顯.首先,同步過程更加方便和靈活,可隨意指定目標(biāo)服務(wù)器及同步的表,而且還可以將表中不同的記錄同步到不同的服務(wù)器;其次,擴(kuò)展性和維護(hù)性更強(qiáng).當(dāng)某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),不會(huì)影響整體應(yīng)用,保證數(shù)據(jù)庫的持續(xù)工作;另外安全性和易用性也得到保障.編程實(shí)現(xiàn)的工具不會(huì)影響數(shù)據(jù)庫的內(nèi)部工作,只是根據(jù)用戶需求實(shí)現(xiàn)具體操作,大大方便了用戶.
[1]譚懷遠(yuǎn). 讓Oracle跑得更快:Orace 10g性能分析與優(yōu)化思路[M].北京:電子工業(yè)出版社,2010.
[2]格里沃爾德. Oracle高級(jí)編程[M].北京:清華大學(xué)出版社,2007.
(審稿人 李樹東 鄧景茹,責(zé)任編輯 王 巍)
The solution to database synchronization programming
WANG Zhan-li, XIU Wei
(Chaoyang Teachers College, Chaoyang Liaoning 122000)
During the process of realizing information system, many databases in different areas need synchronization. Different database systems not only propose different synchronization schemes according to their own rules but also interweave complicatedly. So the database administrator can realize the database synchronization by programming according to different systematic environment.
database synchronization; programming; solution
2015—10—10
王站立(1981-),男,遼寧朝陽市人,講師,主要從事計(jì)算機(jī)教學(xué)研究.
TP311.13
A
1008-5688(2017)01-0032-02