左 翔,姜文彪
(安徽醫(yī)科大學(xué) 計(jì)算機(jī)系,安徽 合肥 230032)
分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與優(yōu)化
左 翔,姜文彪
(安徽醫(yī)科大學(xué) 計(jì)算機(jī)系,安徽 合肥 230032)
分布式數(shù)據(jù)庫是數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物,本文從分布式數(shù)據(jù)庫系統(tǒng)的定義和特點(diǎn)入手,介紹了其設(shè)計(jì)、優(yōu)化的目標(biāo)以及優(yōu)化的方法.
分布式數(shù)據(jù)庫系統(tǒng);設(shè)計(jì);優(yōu)化
近年來,計(jì)算機(jī)技術(shù)的發(fā)展日新月異,借助于計(jì)算機(jī)網(wǎng)絡(luò)而崛起的數(shù)據(jù)庫技術(shù)已不斷滲透到了社會(huì)生活的各個(gè)領(lǐng)域.分布式數(shù)據(jù)庫系統(tǒng)是數(shù)據(jù)庫技術(shù)的一種,它的產(chǎn)生,使在地理上、組織上分散的單位得以實(shí)現(xiàn)信息、數(shù)據(jù)共享,使系統(tǒng)的可靠性、可用性等得到了明顯的改善和提高.因此,如何優(yōu)化分布式數(shù)據(jù)庫系統(tǒng),如何更高效地實(shí)施數(shù)據(jù)庫查詢等問題便顯得尤為重要,它關(guān)系著整個(gè)系統(tǒng)性能和系統(tǒng)效率等諸多關(guān)鍵因素的完善和提高.
分布式數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)是集中式數(shù)據(jù)庫,但是比集中式數(shù)據(jù)庫具有更大的可擴(kuò)展性,它適用于單位和企業(yè)的各下屬、分散部門,允許將分工后的針對(duì)性較強(qiáng)的各部門數(shù)據(jù)存儲(chǔ)在本地存儲(chǔ)設(shè)備上,從而提高用戶操作應(yīng)用程序的反饋速度,在一定程度上降低網(wǎng)絡(luò)通信費(fèi)用.
分布式數(shù)據(jù)庫系統(tǒng)可以分為兩種:一是物理分布邏輯集中,即在物理上是分布的,在邏輯上是一個(gè)統(tǒng)一整體,這類數(shù)據(jù)庫系統(tǒng)比較適用于用途單一、專業(yè)性強(qiáng)的中小企業(yè)或部門;二是無論在物理上或是邏輯上都是分布的,這種分布式數(shù)據(jù)庫系統(tǒng)類型稱為聯(lián)邦式,此類型主要用于集成大范圍數(shù)據(jù)庫,因?yàn)樵撓到y(tǒng)主要由用途迥異、差別明顯的數(shù)據(jù)庫組成.
分布式數(shù)據(jù)庫的物理分布性主要表現(xiàn)在數(shù)據(jù)庫中的數(shù)據(jù)分別存儲(chǔ)在不同的地域內(nèi)或主機(jī)上,而邏輯集中性主要表現(xiàn)在無論用戶處于哪個(gè)位置或使用本局域網(wǎng)中的哪臺(tái)主機(jī),都可以通過應(yīng)用程序?qū)?shù)據(jù)庫進(jìn)行操作,但這些數(shù)據(jù)庫具體的分布位置用戶并不需要知道,就如同數(shù)據(jù)庫存儲(chǔ)在本機(jī),并且由本機(jī)的數(shù)據(jù)庫管理系統(tǒng)進(jìn)行管理.
2.1 數(shù)據(jù)的獨(dú)立性和分布的透明性
數(shù)據(jù)的獨(dú)立性可以說是分布式數(shù)據(jù)庫系統(tǒng)的核心和目標(biāo),而分布的透明性表現(xiàn)在用戶在操作帶有數(shù)據(jù)庫的應(yīng)用程序時(shí),不必了解數(shù)據(jù)存儲(chǔ)的具體物理位置,不必關(guān)心數(shù)據(jù)邏輯集中的區(qū)域,也不必驗(yàn)證本地系統(tǒng)支持哪些數(shù)據(jù)模型.分布透明的特點(diǎn),在很大程度上增加了應(yīng)用程序的可移植性.
2.2 集中和自治相結(jié)合
對(duì)于分布式數(shù)據(jù)庫系統(tǒng)來說,數(shù)據(jù)共享分為兩層:局部共享和全局共享.局部共享是相對(duì)于局部數(shù)據(jù)庫而言的,存儲(chǔ)在局部數(shù)據(jù)庫中的一般是專門針對(duì)本地用戶的常用數(shù)據(jù);全局共享就是說在各個(gè)分布的數(shù)據(jù)庫區(qū)域,也能夠支持系統(tǒng)在全局上的應(yīng)用,可以存儲(chǔ)可供本網(wǎng)中其他位置的用戶共享的數(shù)據(jù).那么對(duì)于這兩層數(shù)據(jù)共享的分類,就有相應(yīng)的兩種控制方式,即集中和自治,各個(gè)局部的數(shù)據(jù)庫管理系統(tǒng)可以對(duì)本區(qū)域的數(shù)據(jù)庫實(shí)施獨(dú)立管理,稱為自治;與此同時(shí),為了協(xié)調(diào)各個(gè)局部數(shù)據(jù)庫管理系統(tǒng),為了宏觀、整體地把握各局部數(shù)據(jù)庫的運(yùn)行情況等,系統(tǒng)還設(shè)置了集中控制的工作方式.
2.3 易于擴(kuò)展性
由于單位、企業(yè)等的數(shù)據(jù)量越來越龐大,對(duì)于數(shù)據(jù)庫服務(wù)器的需求也越來越多.如果服務(wù)器的應(yīng)用程序支持水平方向的擴(kuò)展,那么就可以通過多增加服務(wù)器來分擔(dān)數(shù)據(jù)的處理任務(wù).
3.1 設(shè)計(jì)的原則
3.1.1 分布式數(shù)據(jù)庫系統(tǒng)的主要設(shè)計(jì)原則是本地和近地.所以,在設(shè)計(jì)的過程中,應(yīng)當(dāng)盡量實(shí)現(xiàn)數(shù)據(jù)的本地化,這樣可以有效減少數(shù)據(jù)節(jié)點(diǎn)之間的相互通信,從而提高整個(gè)系統(tǒng)的效率.
3.1.2 為了改善和提高數(shù)據(jù)庫數(shù)據(jù)的可用性和可靠性,有時(shí)候在分布式數(shù)據(jù)庫系統(tǒng)中可以將數(shù)據(jù)保存為副本,如果數(shù)據(jù)的其中一個(gè)副本被損壞或者不能使用,那么在網(wǎng)絡(luò)環(huán)境中的另一個(gè)節(jié)點(diǎn)中可以對(duì)損壞的副本進(jìn)行恢復(fù).不過,在恢復(fù)的同時(shí)有可能增加冗余的數(shù)據(jù),所以在設(shè)計(jì)分布式數(shù)據(jù)庫系統(tǒng)時(shí)應(yīng)當(dāng)全面考慮最優(yōu)的數(shù)據(jù)冗余程序,從而減少數(shù)據(jù)庫更新的成本.
3.1.3 在用戶通過應(yīng)用程序?qū)?shù)據(jù)庫進(jìn)行操作的時(shí)候,分布式數(shù)據(jù)庫系統(tǒng)應(yīng)當(dāng)將總的工作量分流到網(wǎng)絡(luò)環(huán)境中的各局域節(jié)點(diǎn),從而提高了應(yīng)用程序的執(zhí)行效率、擴(kuò)大了數(shù)據(jù)傳輸?shù)牟⑿卸?、充分利用了各局域?jié)點(diǎn)計(jì)算機(jī)的資源.因此在設(shè)計(jì)分布式數(shù)據(jù)庫系統(tǒng)的同時(shí),要將負(fù)荷合理地分流.
3.1.4 在設(shè)計(jì)分布式數(shù)據(jù)庫系統(tǒng)時(shí),要對(duì)網(wǎng)絡(luò)各局域節(jié)點(diǎn)進(jìn)行存儲(chǔ)能力的統(tǒng)籌,對(duì)有限的存儲(chǔ)控件進(jìn)行合理的規(guī)劃.
3.2 設(shè)計(jì)的內(nèi)容
與集中式數(shù)據(jù)庫的設(shè)計(jì)相類似,分布式數(shù)據(jù)庫系統(tǒng)也包括了數(shù)據(jù)庫和應(yīng)用.其中,數(shù)據(jù)庫的設(shè)計(jì)又包括全局的模式設(shè)計(jì)和局部的模式設(shè)計(jì).分布式數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)的關(guān)鍵是如何劃分全局模式并且映射到站點(diǎn).分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)方法大致有:自頂向下設(shè)計(jì)、自底向上設(shè)計(jì)以及混合方法.本文采用自頂向下的設(shè)計(jì)方法.
本文采用自頂向下的設(shè)計(jì)方法.分布式數(shù)據(jù)庫在進(jìn)行自頂向下設(shè)計(jì)時(shí),是以一個(gè)全局并且和站點(diǎn)無關(guān)的模式作為輸入,以產(chǎn)生分布式數(shù)據(jù)庫各個(gè)站點(diǎn)的子模式為輸出,并且將數(shù)據(jù)的分片設(shè)計(jì)以及片段的位置分配設(shè)計(jì)包含在內(nèi).所謂分片,就是把一個(gè)全局的對(duì)象(關(guān)系或者實(shí)體)細(xì)化,分成若干個(gè)邏輯的片段;所謂分配,就是將各個(gè)片段映射到一或多個(gè)站點(diǎn).具體的設(shè)計(jì)步驟如下:首先進(jìn)行需求分析,然后進(jìn)行概念設(shè)計(jì),即將通過需求分析得到的需求抽象為E-R圖.接下來進(jìn)行邏輯設(shè)計(jì),就是將得到的E-R圖轉(zhuǎn)換為對(duì)應(yīng)數(shù)據(jù)模型所符合的某個(gè)邏輯結(jié)構(gòu),比如說關(guān)系模型.之后進(jìn)行物理設(shè)計(jì),確定數(shù)據(jù)庫的物理結(jié)構(gòu),對(duì)數(shù)據(jù)庫的物理結(jié)構(gòu)進(jìn)行相應(yīng)的評(píng)價(jià).然后開始收集一些與分布相關(guān)的信息,比如說水平分片的劃分、各個(gè)站點(diǎn)激活每個(gè)應(yīng)用的頻率等等.最后進(jìn)行分布設(shè)計(jì),這個(gè)步驟用來產(chǎn)生全局?jǐn)?shù)據(jù)的分片模式以及產(chǎn)生片段的位置分配模式,這里的分配模式用于描述分配于各個(gè)站點(diǎn)的數(shù)據(jù)的情況.分布設(shè)計(jì)階段又包含了四個(gè)過程,設(shè)計(jì)分片、非冗余的分配、冗余的分配、重構(gòu)局部模式.
在分布式數(shù)據(jù)庫系統(tǒng)的各項(xiàng)參數(shù)中,查詢效率無疑是至關(guān)重要的一個(gè)指標(biāo),優(yōu)化分布式數(shù)據(jù)庫系統(tǒng)的查詢效率,需要我們?cè)黾佑行У牟樵兯惴ê褪侄危M量避免由于數(shù)據(jù)庫分布而給查詢操作帶來的通信開銷.
4.1 優(yōu)化的目標(biāo)
所謂優(yōu)化,主要強(qiáng)調(diào)的是查詢的快捷,盡量縮減用于查詢的時(shí)間開銷.總結(jié)起來即:
(1)使處于網(wǎng)絡(luò)中的數(shù)據(jù)傳輸量降低至最小.
(2)使用戶通過應(yīng)用程序操作數(shù)據(jù)庫時(shí)的反饋時(shí)間最短.
4.2 具體優(yōu)化方案
任何一個(gè)數(shù)據(jù)庫系統(tǒng)都由各種各樣的關(guān)系組成,也就是通常所說的關(guān)系數(shù)據(jù)庫.分布式數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn)語言是關(guān)系的演算,正是這種算法實(shí)現(xiàn)了核心數(shù)據(jù)庫和局域節(jié)點(diǎn)數(shù)據(jù)庫之間的透明接口.當(dāng)然,要想從算法上進(jìn)行優(yōu)化,那么需要考慮的因素多且繁雜,在查詢優(yōu)化的過程中,不能局限于某種固定的原則,應(yīng)當(dāng)按照實(shí)際的環(huán)境和需要來加以選擇.
4.2.1 基于關(guān)系代數(shù)等價(jià)變換的查詢優(yōu)化
這種優(yōu)化的方法是從關(guān)系代數(shù)表達(dá)式入手.首先分析得到的查詢樹,然后對(duì)查詢樹進(jìn)行從全局到片段的變換,得到基于片段的查詢樹.最后通過關(guān)系代數(shù)等價(jià)變換的算法,盡量將選擇和投影操作先進(jìn)行,以達(dá)到優(yōu)化目的.進(jìn)行這種優(yōu)化需要幾次轉(zhuǎn)換,首先將該查詢問題轉(zhuǎn)換為標(biāo)準(zhǔn)的關(guān)系代數(shù)表達(dá)式;其次將得到的關(guān)系代數(shù)表達(dá)式轉(zhuǎn)換成查詢樹;最后將得到的全局的查詢樹分段,拆分為基于片段的查詢樹.這種方法利用關(guān)系代數(shù)等價(jià)變換的規(guī)則,對(duì)查詢樹進(jìn)行優(yōu)化,從而優(yōu)化查詢.
4.2.2 基于半連接算法的查詢優(yōu)化
半連接算法通常有兩次傳輸,但是傳輸?shù)臄?shù)據(jù)量遠(yuǎn)比傳輸整個(gè)關(guān)系要少,一般有這樣的關(guān)系:T半<
半連接優(yōu)化算法的具體實(shí)現(xiàn)步驟:首先,計(jì)算出每一種半連接方案所要的代價(jià),從而挑選出最佳的方案;其次,選擇傳輸付出代價(jià)最小的站點(diǎn),并計(jì)算采用全連接方案使所要付出的代價(jià),將以上兩種方案做對(duì)比,最終選取最優(yōu)的方案.
4.2.3 基于直接連接算法的查詢優(yōu)化
所謂的直接連接操作,是相對(duì)于半連接操作而言的.當(dāng)數(shù)據(jù)庫的設(shè)計(jì)采用半連接方案時(shí),認(rèn)為傳輸?shù)馁M(fèi)用是最主要的;采用直接連接方案時(shí),認(rèn)為局部的處理費(fèi)用是最主要的.根據(jù)側(cè)重點(diǎn)不同來選擇不同的方案.
直接連接操作的常用策略:當(dāng)兩個(gè)關(guān)系處于同一個(gè)站點(diǎn)時(shí),算法和集中式數(shù)據(jù)庫的相同.通常,根據(jù)掃描順序的不同,一個(gè)是外層的關(guān)系,比如R;對(duì)應(yīng)的,一個(gè)是內(nèi)層的關(guān)系,比如S.策略一是嵌套循環(huán),即按照順序掃描外層的關(guān)系,如果是R,那么掃描R每個(gè)元組的內(nèi)層關(guān)系S,然后查找元組,這些元組在連接屬性上一致.最后把相匹配的元組相結(jié)合,使之成為組成結(jié)果的一部分.策略二是排序掃描法.即首先按照連接屬性將兩個(gè)關(guān)系進(jìn)行排序,然后掃描這兩個(gè)關(guān)系,掃描時(shí)按照連接屬性值的相應(yīng)順序,使得相匹配的元組成為結(jié)果的一個(gè)組成部分.當(dāng)兩個(gè)關(guān)系處在不同的站點(diǎn)時(shí),除了需要考慮局部的代價(jià),還需要考慮傳輸?shù)拇鷥r(jià).傳輸?shù)姆绞接袃煞N,整體傳輸方式和按需(需要)傳輸方式.站點(diǎn)連接方法的選擇有三,分別是R所在的站點(diǎn)、S所在的站點(diǎn)以及除此之外的第三個(gè)站點(diǎn).除了運(yùn)用直接連接操作策略來優(yōu)化查詢外,還可以通過并行的直接連接策略來進(jìn)行優(yōu)化工作,而操作與操作之間的并行,包括流水線的并行、獨(dú)立的并行等,都有積極作用.
本文在介紹分布式數(shù)據(jù)庫系統(tǒng)特點(diǎn)的基礎(chǔ)上,給出了一個(gè)可用性強(qiáng)的分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)方案,并且詳細(xì)描述了該方案中的系統(tǒng)功能結(jié)構(gòu),以及系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)等,并對(duì)分布式數(shù)據(jù)庫的查詢優(yōu)化方法進(jìn)行了分析和闡述.分布式數(shù)據(jù)庫系統(tǒng)由于控制管理方便、結(jié)構(gòu)靈活響應(yīng)快、可靠性和可用性高等優(yōu)點(diǎn),已經(jīng)逐步應(yīng)用于現(xiàn)代生活的各個(gè)方面,我們必須不斷地尋找更加方便快捷的查詢優(yōu)化方法,才能保障分布式數(shù)據(jù)庫系統(tǒng)穩(wěn)定、長(zhǎng)足的發(fā)展.
〔1〕申德榮,于戈.分布式數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用.機(jī)械工業(yè)出版社,2011.
〔2〕錢郭鋒,劉波,陳瑁.分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).現(xiàn)代測(cè)繪,2010(03).
〔3〕李文虎.分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)淺析.科技資訊,2009 (34).
〔4〕邵佩英.分布式數(shù)據(jù)庫系統(tǒng)及其應(yīng)用.科學(xué)出版社,2005.
〔5〕彭巖.基于大系統(tǒng)理論的分布式數(shù)據(jù)庫的設(shè)計(jì)與分析.計(jì)算機(jī)工程,2005(07).
〔6〕任瑞娟.基于分布式數(shù)據(jù)庫構(gòu)建分布式本體的方案設(shè)計(jì).中國(guó)圖書館學(xué)報(bào),2006(04).
T P 310
A
1673-260 X(2012)10-0020-02