分佈式數據庫系統查詢優化算法的研究

                       分佈式數據庫系統查詢優化算法的研究

 

 

  :自分佈式數據庫誕生以來,人們對於分佈式數據庫查詢優化的研究就一直處於進行時。由於分佈式數據庫物理上分佈而邏輯上集中等特性,其查詢優化問題較集中式數據庫來說要複雜很多,因此查詢優化對於分佈式數據庫來說一直是一個重要問題。本文首先概述了布式數據庫的特性以及分佈式詢處理優化隨後總結了目前該領域內流的優化策略,接着簡單介紹了三種尚處於研究中的查詢優化改進方案,最後在文章末尾作出結論和課程總結

 

關鍵詞:分佈式數據庫;查詢處理;優化算法      

 

1  分佈式數據庫概述

      分佈式數據庫系統是物理上分佈而邏輯上集中的數據庫系統。物理上分佈是指分佈式數據庫系統中的數據分佈在由網絡連接起來的、地理位置分散的不同站點上邏輯上集中是指各數據庫站點之間在邏輯上是一個整體,並由統一的數據庫管理系統進行管理,同時各站點又具有管理本地數據的能力。

      考慮到分佈式數據庫系統具備的物理分散性和邏輯上集中性特徵,可以將其看爲計算機網絡和數據庫系統相結合的數據庫系統,綜合來看共包含兩個重要的組成部分:分佈式數據庫和分佈式數據庫管理系統。其中分佈式數據庫是計算機網絡環境中各場地或站點上數據庫的邏輯集合。傳統方式的數據庫系統爲集中式數據庫系統,而分佈式數據庫系統中的各場地數據庫爲局部數據庫。分佈式數據庫是一組結構化的數據集合,邏輯上屬於同一系統,而物理上分佈在計算機網絡的各個不同站點上,其中最大的特點是這組數據所具有的分佈性和邏輯協調性。

      分佈式數據庫管理系統和集中式數據庫管理系統一樣,是分佈式數據庫系統中的一組軟件。負責管理分佈式環境下邏輯集成數據的存取、一致性、有效性、完整性等。同時由於分佈式數據庫的分佈性,所以在管理機制上還必須具有計算機網絡通訊協議上的分佈管理特性。因此,分佈式數據庫管理系統比集中式數據庫管理系統更加複雜。

2  分佈式數據庫的查詢處理和優化

2.1 研究意義

      查詢操作是數據庫中最基本也是最常用的操作,通常用戶最關心的問題也是如何高效、快速的從數據庫中查詢出需要的數據,因此,對於查詢操作的優化一直是數據庫系統的熱點問題之一。

      關於分佈式查詢處理問題是由E-Wong最先提出的,其實質是通過數據分析和數據交互,將分佈式查詢這一問題轉化爲局部的數據條目查詢。在傳統的集中式數據庫系統中,執行查詢的代價用處理查詢的CPU代價和計算機I/O 代價來進行衡量。而在分佈式數據庫系統中,由於系統是由分散在網絡中的多個站點上的計算機組成,這就使得分佈式數據庫系統執行查詢的預期代價除了要考慮 CPU 代價和 I/O代價外,還要考慮數據在網絡上的通信代價。綜合來看分佈式數據庫的查詢優化主要從兩個方面來着手,一方面是降低查詢總代價,另一方面是縮短響應時間。

      由於分佈式數據庫系統的網絡分佈性,不同的分佈式查詢優化算法的查詢費用以及並行處理速度也是大不相同。另外由於分佈式數據庫系統的分佈性和冗餘性,使得分佈式數據庫的查詢優化相比集中式數據庫而言更加多樣、更加複雜。因此,分佈式數據庫系統的查詢優化不僅直接影響分佈式數據庫系統的性能,而且還對增加分佈式數據庫的效率和可靠性起着重要作用,相對於集中式數據庫系統,分佈式數據庫系統的查詢優化更加具有研究價值。

2.2 分佈式查詢優化的層次結構

      由於分佈式數據庫的分佈透明性,使得用戶在進行數據的查詢時,不必去知道關係是否被分片、有無副本、數據的具體物理存放位置等,對用戶而言,查詢的過程同集中式數據庫一樣。爲了方便下文介紹分佈式數據庫的查詢優化解決方案,在此定義查詢結構的四個層次,自上而下分別爲查詢分解、數據本地化、全局優化、局部優化。

圖1  分佈式查詢結構

      其中數據本地化和全局優化階段是分佈式數據庫查詢優化的重點。

2.3 研究現狀

      自從分佈式數據庫系統問世以來,大量學者一直在對分佈式數據庫的查詢優化進行大量的研究並且提出了一些大家公認的經典算法,由於很多算法基本都是針對某一具體情況而實現的優化,具有一定的侷限性,但作爲本科學習分佈式數據庫的起步階段,在這些算法中仍有很多值得探討與學習的地方。

      在集中式數據庫查詢還是在分佈式數據庫查詢中,選擇、投影和連接是最常用的三種操作。對於選擇和投影,集中式數據庫與分佈式數據庫對這兩種操作的優化處理思路基本一致,但是連接操作則不同。分佈式數據庫系統的數據是分散存儲在網絡中的不同站點上的,而數據之間的連接操作必然會涉及到站點間的通信及數據傳輸,因此對於連接操作的優化成爲了分佈式數據庫查詢優化的優化思路之一。此外,分佈式數據庫查詢優化的其它思路還包括:利用關係代數的等價原則對查詢進行優化;利用代價模型查詢圖和貪心思想相結合實現優化;以多表連接查詢的特徵爲基礎,對粒子進行樹形編碼以實現全局的優化策略。

 

3  關於五類優化算法的研究

3.1 基於關係代數等價優化算法

      該算法的基本思想是先將目標查詢問題轉換爲關係代數表達式,然後基於關係代數等價變換的優化算法使用啓發式優化方法對關係代數表達式進行優化[1]。

      在對傳統的集中式數據庫查詢優化學習的過程和實踐中,其發揮的優化作用不言而喻。類比在分佈式數據庫系統的查詢過程中,最花費時間和空間的運算必然也是笛卡兒積和連接操作,爲此,沿用傳統優化過程中的三條啓發式規則,用於對表達式進行轉換,以減少中間關係的大小:

a.  儘可能早地執行選擇操作;

b.  儘可能早地執行投影操作;  

c.  避免直接做笛卡兒積,把笛卡兒積操作之前和之後的一連串選擇和投影合併起來一起做。

      算法首先利用關係代數等價變換規則,把查詢樹中的連接和合並操作儘可能上提,選擇和投影操作儘可能下移到片段的定義處。然後判斷是水平分片還是垂直分片,若爲水平分片,則把分片條件與選擇條件進行比較,去掉存在矛盾的片段,如果只剩下一個片段,就可以去掉一個並操作。若爲垂直分片,則把片段的屬性集與投影操作所涉及的屬性集進行比較,去掉無關的所有片段。如果只剩下一個垂直片段,就可以去掉一個連接操作,從而達到優化查詢的目的。

3.2 基於半連接操作的優化算法

      網絡中兩個站點間進行連接操作時,需要將一個站點的關係通過網絡傳輸到另一站點與在該站點上的關係進行連接操作。在這個過程中,如果傳輸整個關係,那麼網絡傳輸中的數據量會很大,網絡本身複雜多變,如果一次性傳輸較大的數據量定會產生不少問題。

      而在實際的連接操作中,並非所有的數據都參與連接操作。因此爲減少傳輸數據量,可以禁止那些不參與或者無用的數據在網絡中傳輸,而半連接操作就是針對這一問題提出來的,它要實現的目標是減少進行連接操作關係的數據量,從而減少在網絡上的傳輸的數據量,但同時在某種程度上會增加通信的次數以及本地處理的時間。所以在以網絡傳輸費用爲主要優化對象的情況下,使用半連接操作效果更好。在現實中廣域網環境中,數據在網絡上的傳輸速度要比計算機上的數據庫處理速度慢很多,這樣在廣域網的分佈式數據庫查詢操作情況中,查詢優化的目標往往是儘可能地減少網絡傳輸的總費用,基於該種情況多選擇半連接算法作爲主要的查詢優化算法。共有三種代表性算法:

1)SDD—1 算法[2][3]:算法主要分爲基本算法和後優化算法兩部分.SDD-1基本算法主要依據比較縮減程序的關鍵因素———費用、效率、收益估算, 算法最後得出半連接縮減程序集合, 由該集合給出最收益執行策略。SDD-1後優化算法主要是修正SDD-1基本算法得到的解, 使得到的最收益執行策略更合理、更節約時間,最後將所有站點得到的數據進行整合就能獲取最終的查詢結果。

2)WPERF+算法[4]:是W[5]算法和PERF算法[6]的綜合版,優化目標是在保證結果正確性的基上儘可能減少查詢過程產生的網絡流量來優化查詢。

3)二分劈開縮減算法[7]:基於高速網環境下,以響應時間作爲優化準則,既考慮了數據的傳輸代價,又考慮了數據的局部處理代價,最大限度地運用並行性,使得響應時間得以減少。

      爲了使數據的傳輸代價和數據的局部處理代價達到最小 , 最大限度地實現站點間局部操作的並行性 , 並不急於在一個站點上形成半連接運算後得到的連接結果 , 而是用二分劈開條件把完全半連接縮減的關係分爲兩半 , 隨後把具有相同條件的數據被送到一個站點進行連接 , 最終形成分佈在兩個站點上的連接結果 , 避免了在一個站點上形成大的連接結果 , 提高了並行性。由於分佈式的複合查詢是由許多分解到下層的這樣的簡單查詢組成的,因此這種並行效果會逐漸向上傳遞到上層,最終提高整體查詢的響應速度和處理效率。

3.3 基於直接連接操作的優化算法

      半連接操作傾向於通過減少網絡上的數據傳輸量以提高查詢速度,但在另一方面會造成通信次數的增加以及本地處理時間的增加。而在高速局域網下,由於數據在站點間的傳輸時間通常要比局部處理時間要短,所以減少局部時間就成爲查詢優化的關鍵問題,在這種情況下采用直接連接算法的效果會比較好,下面介紹三種代表性算法:

1)分片複製算法:首先選擇分佈式數據庫系統的一組站點,將某一參加查詢的關係進行分 

片並將所得片段都傳遞到該組站點上,每個站點獨立進行關係的連接操作,而最後站點操作結果的並集即爲查詢結果。

2)Hash劃分算法[8]:選則一個合適的Hash 函數,然後對關係的某一屬性或者屬性集的元組值應用Hash函數,將具有相同Hash結果的元組放置到同一個站點,這樣就能夠得到相應關係的水平片段。從而經過Hash劃分的每一個關係的元組都會根據該元組Hash結果存放到多個不同的站點上而組成相應關係的水平片段。

3)Partition算法:利用分佈式數據庫的分佈性特點,在涉及到多個關係的連接操作中,該算法通過對兩個或多個關係在同一連接屬性上進行進行有效的片段劃分,來提高連接操作的並行性,以此降低整個查詢的響應時間。然而對於海量數據以及關係較多連接屬性各不相同的查詢而言,這種算法的效果並不理想。

3.4 基於查詢圖的優化算法

      根據查詢操作裝化爲等價的查詢圖,按照相同劃分屬性合併規則不斷合併迭代,保證最終查詢圖內的關係數量相當以及各子查詢所需時間的均衡,其中連接查詢操作按照查詢圖的結構又可細分爲樹查詢、環查詢、星型查詢和鏈查詢,下面介紹兩種代表性算法:

1)CHAIN算法:對於可以將查詢轉換爲鍊形結構的查詢圖中,從所有連接的關係中選擇連接代價最小的兩個關係進行連接,連接形成的新關係放入剩下沒有進行連接的關係中,然後在從這些關係中選擇代價最小的兩個關係進行連接,局部最優的累加最終達到全局最優,最終能夠找到最少的連接代價序列。

2)Kruskal算法:該算法是一種貪心算法,對於非鏈型查詢圖情況下的優化效果較好。特點在於巧用了構造最小生成樹的算法,即從一個帶權的圖中尋找最小代價的生成樹,各邊相連的兩個關係連接代價作爲帶權圖中各邊的權值。算法的基本思路假設一個有關係的查詢圖,首先計算所有邊的權值,構造最小生成樹的過程是選擇其中一條具有具小權值的邊,然後將該邊上的兩關係合併爲一個新的關係,記錄連接兩個關係的代價並將新關係加入到圖中,同時刪去被連接的兩個關係及其對應的邊,再次選擇一條最小權值的邊,重複以上步驟,直到查詢圖只有一個頂點,即得到查詢圖最少連接代價。類比最小生成樹算法應用的廣泛性,該算法對於不同查詢圖都能找到連接代價最小的查詢序列,可以實現最大程度的優化。

3.5 基於粒子羣的優化算法

      粒子羣優化(PSO)算法是一種隨機全局優化算法, 是以多表連接查詢的特徵爲基礎,對粒子進行樹形編碼的一種分佈式數據查詢方式[9]。與傳統的隨機算法不同,PSO 算法將問題的解抽象爲粒子,不是從單個點,而是從一個粒子羣體開始搜索,同時粒子具有“記憶”和“學習”的能力,通過迭代過程中粒子間的合作與競爭,能使整個粒子羣不斷向最優區域搜索。研究表明,使用粒子羣算法優化後的查詢策略比原始查詢策略的查詢執行代價低,有效地增加了系統的查詢效率,適合解決組合優化領域的一些典型問題。

4  關於一些改進算法的研究

4.1 基於蟻羣算法的查詢優化

      本質上蟻羣算法屬於進化算法中一種特殊的啓發式全局優化算法,具有分佈計算、啓發式搜索和信息正反饋的特徵,適合解決多維動態優化問題[10]。在蟻羣算法中,每一個個體都會通過釋放信息素的方式對周邊環境信息改變,而且個體也能夠對周邊環境的變化進行實時感知,通過環境實現相互通訊。具體操作過程爲:將連接操作進行拆分,尋找最優的查詢方案即尋找最優的連接路徑,即類比於蟻羣問題中的尋找最優路徑問題。在蟻羣問題中通過代價估計模型計算連接代價作爲蟻羣算法中的路徑權值,利用蟻羣算法在尋找最優路徑上的優點進行查詢優化,在搜索過程中,利用分佈式計算,可以實現多個體並行計算,有助於提升計算能力和運行效率。目前該解決方案仍處於研究階段,但大量的實驗結果已表明,該算法不僅有效,而且具有較好的尋優能力,當在連接元組數增多時依然有更好的表現,查詢時間有效縮減。目前衍生出來的比較常見的蟻羣算法還包括基本蟻羣算法AS、最大最小蟻羣算法MMAS、最好最差蟻羣算法BWAS等[11]。

4.2 基於魚羣算法的查詢優化

      該算法和蟻羣算法有相似之處,均藉助於自然界中諸如螞蟻、蜜蜂等羣聚類動物羣體內的動物自治體模式[12],所謂動物自治體,就是通過對實體進行模擬,構建相應的結構來重現動物感知環境變化時所做出的自我調節及快速適應的過程,將動物自治體的模式與結構、魚類活動與分佈式數據庫特點相結合,從而提出了用於解決優化問題的人工魚羣算法[13]。

 

 

圖2  動物自治體結構

      從簡化分佈式多連接查詢的搜索空間入手,首先通過策略選擇算法降低搜索空間的複雜度,然後採用該算法模擬魚的覓食、聚羣和追尾行爲,利用它對極值敏感、反應迅速且同時具備較強的察覺並逃離局部極值的能力等優勢在魚羣中構造單個人工魚個體的局部尋優能力,最終達到全局最優狀態即實現分佈式數據庫的最優多連接查詢。

4.3 基於並行遺傳-蟻羣算法的查詢優化

      遺傳算法(GA)是一種借鑑生物進化規律演化而成的隨機化搜索方法,可以通過對自然進化過程的模擬,尋求最優解。其基本原理是生物學中的選擇、交叉、變異和遺傳等進化現象,本身具有自適應性和自學習型的特點,在大數據處理中有着良好的適用性,經常被用於解決最優化問題。

      顧名思義,並行GA-MMAS是一個將遺傳算法與蟻羣算法結合並實現並行化查詢處理的解決方案,它能夠充分發揮分佈式計算集羣優勢,縮短算法執行時間[14]。算法思想爲:先將種羣分割成多個大小相等的子種羣,保證每個線程獨立完成子種羣遺傳操作,保留從其他種羣獲取的待交流個體,依照串行GA選擇機制,選出進化父體,以本地進化父體與待交流個體完成子種羣間交流。在預設進化次數完成後,主線程會對所有子種羣的局部最優解進行歸約,最終得到全局較優解,再經MMAS算法全局尋優,得到全局最優查詢序列。

5  結論

      在分佈式數據庫領域,查詢優化始終是一個熱門研究問題。論文對分佈式數據庫查詢處理相關技術進行了研究,分析了分佈式查詢處理和優化的相關內容,其中涉及了查詢處理的層次結構和分佈式查詢優化算法的分類。在討論查詢優化的算法中,作者在前人已有關於分佈式查詢優化算法研究的基礎上,綜述了五類比較經典的分佈式查詢優化算法,此外對三種比較新的改進算法進行了簡單的介紹,其未來的發展前景尚需要時間來檢驗,相信人們在當今數據爆炸增長的時代對於速度的追求是無止境的!

 

 

參考文獻

[1] 陸海晶. 分佈式數據庫系統查詢優化算法的研究[D]. 遼寧工程技術大學, 2007

[2] 謝旭升,陳復興.基於並行的SDD-1算法的改進[J].山西大學學報(自然科學版),2013,36(03):338-343.

[3] 聶林娣.分佈式數據庫查詢優化策略研究[J].電腦知識與技術:學術交流,2006(6):5-6.

[4] 馮祖洪,徐宗本.WPERF+:一種有效的分佈式查詢處理優化算法[J].工程數學學報,2004,21(5):797-802.

[5] Yu, C. T.1;Chang, C. C.1.Distributed Query Processing.[J].ACM Computing Surveys, 1984,vol.16,No.4

[6] Ming-Syan Chen, Philip S Yu. Combining join and semi join operations for distributed query processing[J].IEEE Transactions on Knowledge and Data Engineering,1993;5(3):534-542

[7] 張時鵬,陶世羣.大規模數據庫的一種新的分佈式查詢優化算法──二分劈開縮減[J].計算機工程與設計,1998(04):60-64.

[8] De Witt,D.J.,and Gerber,R. Multiprocessor hash-based join algorithms[A]. In Proceedings

of the 11th International Conference on Very Large Data Bases[C], 1985:151-164

[9] 陳一棟.分佈式數據庫查詢優化算法研究與實現[D].長沙理工大學,2008.

[10] 崔峯峯,南振岐.基於蟻羣算法的分佈式數據庫查詢優化方法[J].計算機時代,2014(05):47-49.

[11] 周 瑩.基於多蟻羣遺傳算法的分佈式數據庫查詢優化研究[D].上海師範大學,2016.

[12] S.W.Wilson. Knowledge growth in an artificial animal[C]. Proceedings of an International Conference on Genetic Algorithms and Their Application,1985:16~23.

[13]袁月. 基於改進魚羣算法的分佈式數據庫多連接查詢優化的研究[D].安徽理工大學,2017.

[14] 張靜波.以並行遺傳與蟻羣算法爲核心的分佈式數據庫優化[J].通訊世界,2018(01):268-269.

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章