當(dāng)前位置:首頁 > IT技術(shù) > 數(shù)據(jù)庫 > 正文

系統(tǒng)架構(gòu)師論文-論分布式數(shù)據(jù)庫的設(shè)計與實現(xiàn)
2022-03-06 17:59:23


論分布式數(shù)據(jù)庫的設(shè)計與實現(xiàn)

[摘要]

本文通過XXX高速公路收費系統(tǒng)(以下簡稱收費系統(tǒng)),來論述分布式數(shù)據(jù)庫的設(shè)計與實現(xiàn)。收費系統(tǒng)是我公司近年來接的較為大型的項目,管理結(jié)構(gòu)為三層結(jié)構(gòu):公司級、收費中心級、收費站級,各級之間即可獨立的完成自身業(yè)務(wù),又有自上而下的管理關(guān)系。收費中心、收費站均為三層C/S結(jié)構(gòu),公司級采取B/S結(jié)構(gòu)。該系統(tǒng)的數(shù)據(jù)庫也按照三層來設(shè)計,收費站存放本站的所有流水?dāng)?shù)據(jù),收費中心存放所有數(shù)據(jù),公司本部存放查詢用匯總數(shù)據(jù),收費站與收費中心使用事務(wù)復(fù)制來同歩數(shù)據(jù),而收費中心與公司本部使用快照復(fù)制來同歩數(shù)據(jù),并且使用分級的方法來測試收費站、收費中心與公司本部之間的數(shù)據(jù)同歩。

在本項目的開發(fā)過程中,我擔(dān)任了數(shù)據(jù)庫的設(shè)計工作。

[正文]

2000年10月一2001年12月我公司開發(fā)了高速公路收費系統(tǒng)(以下簡稱收費系統(tǒng)),收費系統(tǒng)項目從管理層面分為三層結(jié)構(gòu):公司級、收費中心級和收費站級。公司本部:供領(lǐng)導(dǎo)、運營部、財務(wù)部等業(yè)務(wù)部門了解業(yè)務(wù)情況、檢查工作-B/S結(jié)構(gòu)各部門通過Web服務(wù)器查詢數(shù)據(jù)庫服務(wù)器,而公司數(shù)據(jù)庫服器定時要求中心數(shù)據(jù)庫服務(wù)器復(fù)制匯總數(shù)據(jù)。

收費中心:收費系統(tǒng)的管理中心下達(dá)管理制度,管理數(shù)據(jù)到收費站,接收統(tǒng)計收費站的收費數(shù)據(jù),上報匯總數(shù)據(jù)到公司,負(fù)責(zé)日常的管理工作。

收費站:具體進(jìn)行收費的單位,收費車道的數(shù)據(jù)通過通信系統(tǒng)實時上傳到收費站數(shù)據(jù)庫保存、分類、匯總,并且實時傳送收費中心下達(dá)的數(shù)據(jù)庫管理,并通過通信子系統(tǒng)下載到車道收費機上具體實施。

系統(tǒng)采用三層C/S與B/S的混合結(jié)構(gòu),收費中心與收費站為三層C/S結(jié)構(gòu),而公司級為B/S結(jié)構(gòu)。我在項目中擔(dān)任了數(shù)據(jù)庫的設(shè)計工作,負(fù)責(zé)數(shù)據(jù)庫的設(shè)計、測試及實施。

1.數(shù)據(jù)庫設(shè)計

此收費系統(tǒng)的結(jié)構(gòu)較為復(fù)雜,分為公司級、收費中心、收費站三級管理結(jié)構(gòu),班可獨立工作,又有管理的聯(lián)系。數(shù)據(jù)實時傳送到收費站數(shù)據(jù)庫服務(wù)器,再實時傳送到收費中心數(shù)據(jù)庫服務(wù)器。在數(shù)據(jù)庫設(shè)計方面我們按物理的分布也分為三層結(jié)構(gòu)。

在收費站,根據(jù)系統(tǒng)的需求分析的結(jié)果,一輛車通過收費站時產(chǎn)生的最基本的數(shù)據(jù)有:通過日期、時間、車型、收費類型及收費金額,因為收費標(biāo)準(zhǔn)不輕易改變,考慮到我們采用的是專用的車道收費機,存儲量較小,所以收費金額項在此處不計入數(shù)據(jù)庫,上傳至收費站數(shù)據(jù)庫服務(wù)器后,可以用車數(shù)乘以此類車型的收費標(biāo)準(zhǔn)而得到。當(dāng)車道收費機上傳數(shù)據(jù)到數(shù)據(jù)庫時,還要加上工班、車道及收費員信息,保證數(shù)據(jù)的唯一性,所以我們把日期、時間、工

班、車道、收費員、收費類型、車型設(shè)為組合主謎,為車輛流水?dāng)?shù)據(jù)。收費員下班后還要上繳實收金額,因此還要保存實收金額,包括日期、工班、收費員及實際收費金額,為工班收費數(shù)據(jù)。在此基礎(chǔ)上,分析、匯總數(shù)據(jù),得到以下幾類數(shù)據(jù):

業(yè)務(wù)類型數(shù)據(jù):車輛流水?dāng)?shù)據(jù)、工班收費數(shù)據(jù)、車道開通情況、收費員上班情況;擴展的數(shù)據(jù):為了查詢、打印的方便、高效,流水表經(jīng)過分類匯總,產(chǎn)生了以車道分類統(tǒng)計的車流量表(日、月)、以收費員來分類統(tǒng)計的收費金額表(日、月)及不收費車輛統(tǒng)計表;

管理類型數(shù)據(jù):收費標(biāo)準(zhǔn)、收費員信息、收費站信息、車道信息、工班信息、收費類型信息;

從全局應(yīng)用的角度出發(fā),各收費站存放本站的數(shù)據(jù),收費中心的數(shù)據(jù)庫則存放所有數(shù)據(jù),并対數(shù)據(jù)進(jìn)行完整性和一致性的檢查,這種做法雖然有一定的數(shù)據(jù)冗余,但在不同場地存儲同一數(shù)據(jù)的多個副本,能提高系統(tǒng)的可靠性、可用性,使系統(tǒng)易于擴充,也提高了局部應(yīng)用的效率,減少了通訊代價,同時也使得各處理機之間的相互干擾降到最低。公司總部存放所有收費站的匯總數(shù)據(jù),通過瀏覽器進(jìn)行查詢。

2.數(shù)據(jù)的分布

(1)在收費中心數(shù)據(jù)庫服務(wù)器與收費站數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)關(guān)系中,由于收費站的數(shù)據(jù)是收費中心數(shù)據(jù)的子集,我們采用了水平分片的方式,通過并運算實現(xiàn)關(guān)系的重構(gòu)。

(2)在收費中心數(shù)據(jù)庫服務(wù)器與公司總部數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)關(guān)系中,數(shù)據(jù)是按照其應(yīng)用功能來劃分的,所以我們采用了垂直分片的方式。

數(shù)據(jù)分布在多個地點,為了保證數(shù)據(jù)的一致性及完整性,我使用了事務(wù)復(fù)制和快照復(fù)制丙種數(shù)據(jù)同歩的方式,在收費中心與收費站之間使用事務(wù)復(fù)制,而在收費中心和公司總部之同使用快照復(fù)制。

対于業(yè)務(wù)類型的數(shù)據(jù),收費站在本地存放收費車輛的實時數(shù)據(jù),而用戶也要求:收費中心也要實時的收費車輛數(shù)據(jù),延遲不超過2秒,所以我采用事務(wù)復(fù)制進(jìn)行業(yè)務(wù)數(shù)據(jù)的同歩,收費站只需將更新的數(shù)據(jù)發(fā)送到收費中心的數(shù)據(jù)庫即可。具體過程如下,把收費站的數(shù)據(jù)庫作為出版者和分發(fā)者,收費中心的數(shù)據(jù)庫作為訂閱者,対收費站的數(shù)據(jù)建立快照代理,并在分發(fā)數(shù)據(jù)庫中記錄同歩狀態(tài)的信息。每一個使用事務(wù)復(fù)制的收費站數(shù)據(jù)庫均有自己的日志讀取

代理,運行在分發(fā)者上并連接出版者。分發(fā)代理的任務(wù)是將分發(fā)數(shù)據(jù)庫中保持的事務(wù)任務(wù)直接推動到訂閱者。當(dāng)推訂閱被創(chuàng)建時,每個為立即同歩而建立的事務(wù)出版物通過自己的分布代理運行在分發(fā)者上并與訂閱者相連。

而管理型的數(shù)據(jù)是在收費中心設(shè)置,雖然修改的頻度不是很大,但在修改后即要發(fā)生作用,所以也采用事物型復(fù)制,收費中心為出版者,收費站為訂閱者。將管理型的數(shù)據(jù)發(fā)布到各收費站。

由于公司總部不需要實時更新,所以收費中心數(shù)據(jù)庫服務(wù)器與公司總部服務(wù)器之間的數(shù)據(jù)同歩設(shè)置為快照復(fù)制,公司總部數(shù)據(jù)庫中建立收費中心表的快照,対這些數(shù)據(jù)的修改在收費中心進(jìn)行,把收費中心數(shù)據(jù)庫服務(wù)器設(shè)置為出版者,出版物為匯總數(shù)據(jù),公司總部數(shù)據(jù)庫服務(wù)器設(shè)置為訂閱者,快照代理將準(zhǔn)備包含有被出版數(shù)據(jù)表的結(jié)構(gòu)與數(shù)據(jù)的快照文件,在分發(fā)者上存儲這些文件,并在分發(fā)者的分發(fā)數(shù)據(jù)庫中記錄同歩任務(wù)。在收費中心數(shù)據(jù)庫服務(wù)器上建立一個作業(yè),設(shè)置為每天早上8點更新一次(收費日的夭為8點到第二天8點),公司總部就能得到截止到前一天所有收費站的匯總數(shù)據(jù)。

系統(tǒng)架構(gòu)師論文-論分布式數(shù)據(jù)庫的設(shè)計與實現(xiàn)_軟考論文

3.測試

數(shù)據(jù)庫設(shè)計好了,就要対它進(jìn)行測試。我們的測試策略為分歩測試:首先測試收費站數(shù)據(jù)的正確性及完整性,在多臺收費機上同時輸入幾組車型、收費類型的數(shù)據(jù),查詢數(shù)據(jù)庫的流水?dāng)?shù)據(jù)是否正確,再看匯總數(shù)據(jù)是否正確;收費站正確后,再測試收費中心的數(shù)據(jù)的正確性、完整性及延時;再測試公司總部的數(shù)據(jù)正確性、完整性。

一開始我們把所有的表都建立在一個出版物中,但在測試中我們發(fā)現(xiàn),由于收費站一個表的錯誤而造成的復(fù)制的中斷,經(jīng)常要重新配置復(fù)制,所有的表都要重新選擇及設(shè)置一遍,非常繁瑣,我們采取一個表建立一個出版物的方法來簡化操作,只要恢復(fù)出錯的復(fù)制,其他的復(fù)制仍然能正常執(zhí)行,而且哪一個表的復(fù)制發(fā)生中斷也很明確,不僅簡化了操作,也加快了處理時間,就是日后用戶雄護(hù)起來也簡單明了。

在設(shè)計過程中,基于查詢及安全性的需要,我們大量的使用了視圖,第一加快了查詢速度;第二也防止了人為因素造成的數(shù)據(jù)的更改。

4.總結(jié)

按照以上的設(shè)計方案實施后,完全滿足高速公路系統(tǒng)対數(shù)據(jù)實時性和完整性的要求,系統(tǒng)目前只在內(nèi)部使用,而以后全省的高速公路收費系統(tǒng)實行聯(lián)網(wǎng),在外網(wǎng)上發(fā)布信息,那時數(shù)據(jù)的安全性及查詢的響應(yīng)速度將是我們考慮的重點。



本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >