摘要:介紹了分布式數(shù)據(jù)庫(kù)的特點(diǎn)以及在企業(yè)MIS/ERP系統(tǒng)中的應(yīng)用和數(shù)據(jù)分布特性,闡述了松耦合分布式數(shù)據(jù)環(huán)境中的數(shù)據(jù)庫(kù)復(fù)制技術(shù)。
關(guān)鍵詞:分布式數(shù)據(jù)庫(kù);松耦合;數(shù)據(jù)分片;數(shù)據(jù)庫(kù)復(fù)制
引言
當(dāng)今社會(huì)飛速發(fā)展,許多企業(yè)的經(jīng)營(yíng)和管理規(guī)模不斷擴(kuò)大,營(yíng)業(yè)和管理機(jī)構(gòu)的分散造成了業(yè)務(wù)數(shù)據(jù)的分散,總公司與各分公司處于不同的城市或城市中的各個(gè)地區(qū),在業(yè)務(wù)上它們處理各自的數(shù)據(jù),但也需要彼此之間數(shù)據(jù)的交換和處理,如何協(xié)調(diào)處理分散的數(shù)據(jù)和集中的管理,是企業(yè)發(fā)展的關(guān)鍵問(wèn)題之一,也是MIS/ERP系統(tǒng)開發(fā)者要研究和解決的重點(diǎn)。分布式數(shù)據(jù)庫(kù)系統(tǒng)技術(shù)在這個(gè)方面就起到了至關(guān)重要的作用,使企業(yè)在運(yùn)作中能夠得心應(yīng)手地管理處于分布環(huán)境下的各種數(shù)據(jù)。
1 分布式數(shù)據(jù)庫(kù)特點(diǎn)介紹
分布式數(shù)據(jù)庫(kù)(DDB)的數(shù)據(jù)分布在計(jì)算機(jī)網(wǎng)絡(luò)的不同節(jié)點(diǎn)(亦稱場(chǎng)地)上,網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)具有獨(dú)立處理的能力(稱為場(chǎng)地自治),可以執(zhí)行局部應(yīng)用,同時(shí),每個(gè)節(jié)點(diǎn)也能通過(guò)網(wǎng)絡(luò)系統(tǒng)執(zhí)行全局應(yīng)用。系統(tǒng)強(qiáng)調(diào)節(jié)點(diǎn)的自治性而不強(qiáng)調(diào)系統(tǒng)的集中控制,且應(yīng)保持?jǐn)?shù)據(jù)的分布透明性,在編寫應(yīng)用程序時(shí)可完全不考慮數(shù)據(jù)的分布情況。分布式數(shù)據(jù)庫(kù)的顯著特點(diǎn)是:
(1)分布性
數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是存儲(chǔ)在同一計(jì)算機(jī)。這有別于集中式數(shù)據(jù)庫(kù)。
(2)邏輯相關(guān)性
數(shù)據(jù)庫(kù)邏輯上是相互聯(lián)系的一個(gè)整體,而不是分散的局部物理數(shù)據(jù)庫(kù)的集合。
(3)分布式透明性
所謂分布式透明性就是在編寫程序時(shí)好像數(shù)據(jù)沒(méi)有被分布一樣,因此,數(shù)據(jù)轉(zhuǎn)移不會(huì)影響程序的正確性。
(4)數(shù)據(jù)冗余
與集中式數(shù)據(jù)庫(kù)系統(tǒng)不同,數(shù)據(jù)冗余是分布式系統(tǒng)的重要特性,其原因在于:首先,如果在需要的節(jié)點(diǎn)復(fù)制數(shù)據(jù),則可以提高系統(tǒng)局部的應(yīng)用能力。其次,當(dāng)某節(jié)點(diǎn)發(fā)生故障時(shí),可以操作其它節(jié)點(diǎn)上的復(fù)制數(shù)據(jù),因此,提高了系統(tǒng)的有效性。
(5)數(shù)據(jù)存儲(chǔ)途徑
在分布式數(shù)據(jù)庫(kù)中,數(shù)據(jù)存儲(chǔ)通過(guò)以下三種途徑實(shí)現(xiàn)。
復(fù)制:系統(tǒng)維護(hù)多個(gè)完全相同的副本,這些副本存儲(chǔ)在不同的節(jié)點(diǎn)上。
分片:關(guān)系被劃分為幾個(gè)片段,各個(gè)片段存儲(chǔ)在不同的節(jié)點(diǎn)上。
復(fù)制+分片:關(guān)系被劃分為幾個(gè)片段,系統(tǒng)為每個(gè)片段維護(hù)幾個(gè)副本。
2 分布式數(shù)據(jù)庫(kù)技術(shù)在企業(yè)數(shù)據(jù)管理中的應(yīng)用現(xiàn)狀及特點(diǎn)
在多數(shù)使用了分布式數(shù)據(jù)庫(kù)的企業(yè)MIS/ERP系統(tǒng)中,總公司與各分公司處于不同的城市或城市中的各個(gè)地區(qū),在業(yè)務(wù)上它們處理各自的數(shù)據(jù),但彼此之間也需要進(jìn)行數(shù)據(jù)交換和處理。這種處理一般有兩種情況:一種是數(shù)據(jù)的交換和處理必須實(shí)時(shí)進(jìn)行以確保數(shù)據(jù)庫(kù)的緊密一致性;另一種是定期地進(jìn)行數(shù)據(jù)交換和處理,甚至只在必要時(shí)進(jìn)行,這種方式對(duì)于數(shù)據(jù)庫(kù)的一致性在時(shí)間上要求不高,各場(chǎng)地間保持松耦合狀態(tài),每個(gè)營(yíng)業(yè)機(jī)構(gòu)處理的是本機(jī)構(gòu)的數(shù)據(jù),各營(yíng)業(yè)機(jī)構(gòu)之間或下級(jí)營(yíng)業(yè)機(jī)構(gòu)與上級(jí)營(yíng)業(yè)機(jī)構(gòu)之間只是定期進(jìn)行數(shù)據(jù)的交換。大多數(shù)企業(yè)MIS/ERP應(yīng)用都是采用松耦合分布式數(shù)據(jù)環(huán)境。
松耦合分布式數(shù)據(jù)環(huán)境從全局應(yīng)用的角度出發(fā),將分公司的所有數(shù)據(jù)庫(kù)自下而上構(gòu)成分布式數(shù)據(jù)庫(kù)系統(tǒng),實(shí)現(xiàn)全局?jǐn)?shù)據(jù)的完整性和一致性,各營(yíng)業(yè)機(jī)構(gòu)存放本機(jī)構(gòu)的數(shù)據(jù),總公司的數(shù)據(jù)庫(kù)則存放所有業(yè)務(wù)數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行完整性和一致性的檢查。這種做法雖然有一定的數(shù)據(jù)冗余,但在不同場(chǎng)地存儲(chǔ)同一數(shù)據(jù)的多個(gè)副本,能提高系統(tǒng)的可靠性和可用性,同時(shí)提高局部應(yīng)用的效率,減少通訊代價(jià)。分布式數(shù)據(jù)庫(kù)系統(tǒng)可以在對(duì)當(dāng)前機(jī)構(gòu)影響最小的情況下進(jìn)行擴(kuò)充,增加新的營(yíng)業(yè)機(jī)構(gòu)時(shí)只需增加一個(gè)節(jié)點(diǎn)就可以了,同時(shí)也使得各處理機(jī)之間的相互干擾降到最低。
3 數(shù)據(jù)庫(kù)復(fù)制技術(shù)在松耦合分布式數(shù)據(jù)環(huán)境中的實(shí)現(xiàn)
分布式數(shù)據(jù)庫(kù)系統(tǒng)可以通過(guò)復(fù)制、分片和復(fù)制加分片三種方式存儲(chǔ)數(shù)據(jù)。因?yàn)楦鲾?shù)據(jù)庫(kù)之間存在一定的數(shù)據(jù)冗余,又存在著差異,我們使用了復(fù)制十分片的方式進(jìn)行數(shù)據(jù)存儲(chǔ)。
3.1 數(shù)據(jù)分片
在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,將關(guān)系分片,有利于按用戶需求組織數(shù)據(jù),目前的分片方式有水平分片、垂直分片、導(dǎo)出分片、混合分片等四種。我們根據(jù)不同的數(shù)據(jù)關(guān)系采用了不同的分片方式:
水平分片對(duì)于總公司與分支營(yíng)業(yè)機(jī)構(gòu)的數(shù)據(jù)關(guān)系,由于分支機(jī)構(gòu)的數(shù)據(jù)是總公司業(yè)務(wù)數(shù)據(jù)的子集,我們采用了水平分片的方式,通過(guò)并運(yùn)算實(shí)現(xiàn)關(guān)系的重構(gòu)。
垂直分片對(duì)于總公司數(shù)據(jù)庫(kù)服務(wù)器與Web數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)關(guān)系,數(shù)據(jù)是按照其應(yīng)用功能來(lái)劃分的,所以我們采用了垂直分片的方式。
3.2 數(shù)據(jù)庫(kù)復(fù)制技術(shù)
3.2.1選用數(shù)據(jù)庫(kù)復(fù)制技術(shù)的原因
數(shù)據(jù)庫(kù)復(fù)制技術(shù)是在數(shù)據(jù)庫(kù)之間對(duì)數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象進(jìn)行復(fù)制和分發(fā)并進(jìn)行同步以確保其一致性的一組技術(shù)。企業(yè)生產(chǎn)管理的數(shù)據(jù)環(huán)境特性是:①數(shù)據(jù)中心(總公司)的新數(shù)據(jù)或處理后的數(shù)據(jù)需要復(fù)制或分發(fā)至一個(gè)或多個(gè)數(shù)據(jù)分中心(各營(yíng)業(yè)廳)。②各個(gè)數(shù)據(jù)分中心的數(shù)據(jù)被匯總到數(shù)據(jù)中心服務(wù)器上,然后由數(shù)據(jù)中心服務(wù)器加以歸并整合。因此,我們選擇使用數(shù)據(jù)庫(kù)復(fù)制技術(shù)作為這種松耦合分布式數(shù)據(jù)環(huán)境的解決方案。
3.2.2解決方案
數(shù)據(jù)庫(kù)復(fù)制的過(guò)程不像一般的數(shù)據(jù)傳遞,它更要將數(shù)據(jù)進(jìn)行同步處理。由于總公司數(shù)據(jù)庫(kù)服務(wù)器與Web服務(wù)器之間的數(shù)據(jù)交換是雙向的,總公司業(yè)務(wù)管理和營(yíng)業(yè)所業(yè)務(wù)管理都會(huì)產(chǎn)生新的業(yè)務(wù)數(shù)據(jù),所以我們使用合并復(fù)制方式實(shí)現(xiàn)數(shù)據(jù)同步:把總公司數(shù)據(jù)庫(kù)服務(wù)器設(shè)置為出版者,Web數(shù)據(jù)庫(kù)服務(wù)器設(shè)置為訂閱者,合并復(fù)制監(jiān)視源數(shù)據(jù)庫(kù)中的改變,并同步出版者和訂閱者的數(shù)據(jù)值,其中無(wú)論是出版者還是訂閱者均可以更新數(shù)據(jù)。當(dāng)出版者同訂閱者發(fā)生沖突時(shí),我們將出版者設(shè)置為高優(yōu)先級(jí)。與此類似,目的數(shù)據(jù)庫(kù)中的數(shù)據(jù)改變將被告知源數(shù)據(jù)庫(kù)。合并復(fù)制涉及快照代理和合并代理的參與??煺沾韺?zhǔn)備包含有被出版數(shù)據(jù)表的結(jié)構(gòu)與數(shù)據(jù)的快照文件,在分發(fā)者上存儲(chǔ)這些文件,并在分發(fā)者的分發(fā)數(shù)據(jù)庫(kù)中記錄同步任務(wù)。合并代理應(yīng)用存儲(chǔ)在出版數(shù)據(jù)庫(kù)表中的初始快照任務(wù)于訂閱者;它也合并在最初快照建立后改變的數(shù)據(jù),并依據(jù)用戶配置的規(guī)則或使用用戶自定義的解決方法來(lái)協(xié)調(diào)沖突。
3.2.3具體實(shí)施步驟
(1)數(shù)據(jù)中心配置發(fā)布服務(wù)器和分發(fā)服務(wù)器,指定發(fā)布數(shù)據(jù)庫(kù)和分發(fā)數(shù)據(jù)庫(kù)和發(fā)布類型(合并發(fā)布),指定存儲(chǔ)快照文件夾的根位置并創(chuàng)建發(fā)布。
(2)數(shù)據(jù)中心創(chuàng)建請(qǐng)求訂閱,添加或指定注冊(cè)的訂閱服務(wù)器。
(3)脫機(jī)工作時(shí),各個(gè)數(shù)據(jù)分中心可以更新數(shù)據(jù)。網(wǎng)絡(luò)連通后,通過(guò)使用請(qǐng)求訂閱,各數(shù)據(jù)分中心通過(guò)訂閱服務(wù)器下載數(shù)據(jù)中心分發(fā)的相應(yīng)數(shù)據(jù)。
(4)連通數(shù)據(jù)中心發(fā)布數(shù)據(jù)庫(kù)服務(wù)器,生成訂閱。訂閱生成后,各個(gè)數(shù)據(jù)分中心更新后的數(shù)據(jù)將傳送到發(fā)布服務(wù)器和訂閱服務(wù)器,同時(shí)進(jìn)行同步處理檢測(cè)并解決沖突。
3.2.4特別說(shuō)明
在實(shí)際操作中,如果由于網(wǎng)絡(luò)傳輸速率太低或者掉線會(huì)給數(shù)據(jù)庫(kù)復(fù)制的初始化工作帶來(lái)不便。因此,我們可以采用在數(shù)據(jù)中心局域網(wǎng)初始化各分中心的訂閱數(shù)據(jù)庫(kù)框架,再將該數(shù)據(jù)庫(kù)用移動(dòng)存儲(chǔ)的方式移到相應(yīng)數(shù)據(jù)分中心的方法解決。
(1)(數(shù)據(jù)中心)在發(fā)布服務(wù)器上首先配置發(fā)布和分發(fā),使用數(shù)據(jù)中心局域網(wǎng)的其他計(jì)算機(jī)作為訂閱服務(wù)器,對(duì)每個(gè)分中心的訂閱內(nèi)容進(jìn)行一次初始化訂閱操作(需要用快照初始化框架),以生成相應(yīng)的訂閱數(shù)據(jù)庫(kù)。
(2)各分中心使用移動(dòng)存儲(chǔ)將自己已初始化的訂閱數(shù)據(jù)庫(kù)從數(shù)據(jù)中心移到本地訂閱服務(wù)器上。
(3)分中心連通數(shù)據(jù)中心發(fā)布數(shù)據(jù)庫(kù)服務(wù)器,生成訂閱(此時(shí)不需要初始化框架),訂閱生成后馬上運(yùn)行同步處理,其間不要更改任何數(shù)據(jù)(適用發(fā)布服務(wù)器,訂閱服務(wù)器)。
使用這種方式可以有效地避免因網(wǎng)絡(luò)傳輸速度慢或者斷網(wǎng)以及發(fā)布服務(wù)器初始化訂閱服務(wù)器框架不易順利進(jìn)行的問(wèn)題。以這種方式初始化訂閱數(shù)據(jù)庫(kù)框架后,復(fù)制操作按照數(shù)據(jù)庫(kù)復(fù)制的規(guī)范步驟進(jìn)行即可。
4 結(jié)束語(yǔ)
本文探討了松耦合分布式數(shù)據(jù)環(huán)境中的數(shù)據(jù)庫(kù)復(fù)制技術(shù),提出的實(shí)現(xiàn)方案有效地解決了企業(yè)MIS/ERP的數(shù)據(jù)中心和數(shù)據(jù)分中心之間進(jìn)行數(shù)據(jù)分發(fā)和同步的一致性問(wèn)題,減少了通訊代價(jià),增強(qiáng)了系統(tǒng)的可靠性和可用性,提高了整個(gè)系統(tǒng)運(yùn)行的效率。