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