蘇 暢
(黑龍江工業(yè)學(xué)院,黑龍江 雞西 158100)
在數(shù)據(jù)庫建設(shè)過程中,查詢引擎具備十分重要的地位與作用,提升數(shù)據(jù)庫查詢功能的關(guān)鍵在于做好查詢優(yōu)化工作。以往傳統(tǒng)數(shù)據(jù)庫的應(yīng)用過程中存在多種優(yōu)化查詢方法,但相較傳統(tǒng)數(shù)據(jù)庫而言,分布式列式數(shù)據(jù)庫的數(shù)據(jù)存儲位置、信息讀取方式以及組織結(jié)構(gòu)分布等方面均存在較大差異,查詢優(yōu)化方式各不相同,這便導(dǎo)致傳統(tǒng)數(shù)據(jù)查詢優(yōu)化方式并不適用于分布式分列數(shù)據(jù)庫。對此,應(yīng)基于內(nèi)存分布式列式數(shù)據(jù)庫的自身特點,不斷優(yōu)化查詢方式,拓展其查詢范圍,提升系統(tǒng)的運行效果。
(1)關(guān)系數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)之間的內(nèi)在關(guān)系主要以表格的形式體現(xiàn),其核心內(nèi)容為表格,描述對象為數(shù)據(jù)內(nèi)容,表格中存在多個描述對象,因此關(guān)系模型也存在多種內(nèi)在的描述關(guān)系。描述關(guān)系模型的過程被稱為關(guān)系代數(shù),其主要以表格模型為操作基礎(chǔ),針對分布式列式數(shù)據(jù)庫關(guān)系進行查詢操作,體現(xiàn)了關(guān)系代數(shù)的運用。并、交、差、選擇、組合以及投影等均屬于關(guān)系代數(shù)的操作,對于不同操作模式需要利用不同符號表示,以有效體現(xiàn)出兩個關(guān)系主體之間的操作特征。在對分布式列式數(shù)據(jù)庫進行查詢請求時應(yīng)通過不同等價代數(shù)關(guān)系進行表達,其查詢優(yōu)化工作的基礎(chǔ)便為時間應(yīng)用、空間應(yīng)用以及代數(shù)關(guān)系轉(zhuǎn)化等。
(2)列式存儲及查詢優(yōu)化技術(shù)。列式數(shù)據(jù)庫一般通過二維表的模式進行構(gòu)建,且計算機主要通過連續(xù)地址的方式存放模型數(shù)據(jù),將描述對象的空間邏輯結(jié)構(gòu)轉(zhuǎn)換為平面物理存儲模式。不同于傳統(tǒng)的數(shù)據(jù)庫系統(tǒng),列式數(shù)據(jù)庫主要采用列式存儲方式,在存儲完一列之后再存儲下一列。而傳統(tǒng)數(shù)據(jù)庫則采用行存儲方式,即在存儲完一行之后再存儲下一行。行與列的存儲方式均具備自身的優(yōu)缺點。為了提升數(shù)據(jù)的查詢效率,數(shù)據(jù)存儲方式方面應(yīng)采用行表順序,而模型構(gòu)建方面則采用列式方式。除此之外,還可以應(yīng)用混合索引、行號索引等存儲方式,根據(jù)不同的數(shù)據(jù)庫應(yīng)用領(lǐng)域進行針對性選擇,從而體現(xiàn)不同的應(yīng)用優(yōu)劣勢。
(3)分布式環(huán)境查詢優(yōu)化技術(shù)。分布式列式數(shù)據(jù)庫在數(shù)據(jù)節(jié)點的分布方面存在交互特征,內(nèi)部分布式環(huán)境在進行信息查詢與檢索時也存在較多差異,且查詢工作的關(guān)鍵在于節(jié)點之間的傳輸成本。在數(shù)據(jù)查詢過程中,系統(tǒng)會將不同的查詢?nèi)蝿?wù)分配至不同的數(shù)據(jù)節(jié)點中,且期間必須考慮數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸成本。同時,查詢優(yōu)化的關(guān)鍵在于執(zhí)行正確的數(shù)據(jù)分布策略與查詢?nèi)蝿?wù)執(zhí)行策略,并根據(jù)分布式數(shù)據(jù)庫的結(jié)構(gòu)特點,將數(shù)據(jù)分散至不同物理節(jié)點中,有效提升查詢效果。
(4)數(shù)據(jù)庫查詢的基本流程。數(shù)據(jù)庫應(yīng)用的關(guān)鍵內(nèi)容便是查詢?nèi)蝿?wù)的執(zhí)行,其也更好地體現(xiàn)了數(shù)據(jù)庫的應(yīng)用效率。查詢引擎可以有效接收客戶端的用戶查詢請求,并由DC轉(zhuǎn)化成語言,在分析之后確定查詢計劃,之后在由執(zhí)行引擎完成查詢工作任務(wù),最終向客戶端反饋查詢結(jié)果。一般而言,數(shù)據(jù)庫查詢流程可以歸納如下:一是客戶端發(fā)送查詢語言,請求至DC層面;二是DC將客戶查詢請求發(fā)送至QE節(jié)點,之后解析查詢語言;三是QE解析查詢請求后執(zhí)行查詢計劃,并將其發(fā)送至主控節(jié)點,進行位置提示;四是DC向客戶端告知查詢應(yīng)用的目標(biāo)QE節(jié)點;五是目標(biāo)QE節(jié)點與客戶端進行鏈接,建立關(guān)系;六是計劃節(jié)點向其他QE節(jié)點發(fā)送數(shù)據(jù)查詢請求;七是QE節(jié)點向下層CS發(fā)送數(shù)據(jù)查詢請求;八是CS反饋數(shù)據(jù)信息,并執(zhí)行命令;九是根據(jù)執(zhí)行要求匯總不同QE節(jié)點計算的數(shù)據(jù),計算最終結(jié)果;十是向客戶端反饋最終查詢結(jié)果,完成全部查詢?nèi)蝿?wù)。其具體流程見下圖1所示。
圖1 數(shù)據(jù)庫查詢基本流程
(1)查詢優(yōu)化的基本流程。數(shù)據(jù)查詢工作開始于查詢?nèi)蝿?wù)執(zhí)行命令,之后經(jīng)過層層數(shù)據(jù)的傳輸與轉(zhuǎn)化形成最終的物理操作計劃。且其流程可以分為語法解析階段、預(yù)處理階段、根據(jù)規(guī)則執(zhí)行轉(zhuǎn)化階段、查詢并計算代價階段以及確定最優(yōu)查詢路徑階段。首先是語法解析階段,此階段主要語法分析查詢語言,并將語言分解為具有代表意義的詞匯,之后對不同詞匯進行語法分析,確定不同單詞之間的語言邏輯關(guān)系。在此階段需要篩選不符合語法規(guī)則的查詢語言,確保執(zhí)行階段的查詢語言負荷規(guī)則,從而有效完成后期的查詢?nèi)蝿?wù)。其次是預(yù)處理階段,主要預(yù)先處理語法樹中的表達方式,減少執(zhí)行階段的工作量。在此階段中主要整理去除多余的詞匯前后綴,并通過語法樹的預(yù)處理遍歷,形成具有邏輯執(zhí)行價值的初始查詢計劃。再次是執(zhí)行計劃優(yōu)化階段,主要適當(dāng)調(diào)整上階段的查詢計劃,通過關(guān)系代數(shù)模型完成技術(shù)操作,并通過計劃調(diào)整減少執(zhí)行任務(wù)量的工作目標(biāo),在提升查詢工作效率的基礎(chǔ)上,確定最優(yōu)的查詢應(yīng)用與計劃方案。最后是物理優(yōu)化,其主要利用不同的優(yōu)化選擇方式生成最優(yōu)選擇價值的空間。
(2)查詢優(yōu)化設(shè)計。一是設(shè)計查詢引擎,解析與優(yōu)化查詢語言的語句,并執(zhí)行查詢?nèi)蝿?wù)。期間主要由查詢優(yōu)化與任務(wù)執(zhí)行優(yōu)化等兩方面進行,且其彼此保持獨立,而任務(wù)執(zhí)行優(yōu)化則可以由計劃解析、執(zhí)行、緩存管理等方面進行,從而有效提升優(yōu)化效率。二是數(shù)據(jù)存儲與分布方案,數(shù)據(jù)庫的基本功能為數(shù)據(jù)存儲,其也屬于查詢優(yōu)化的工作基礎(chǔ)。在查詢優(yōu)化方面應(yīng)選擇Group-Key列式存儲方式,確保數(shù)據(jù)之間的關(guān)聯(lián)性,通過扁平化的集成模式體現(xiàn)不同數(shù)據(jù)間的交互特點,提高查詢效率。
(3)算法細節(jié)優(yōu)化。不同節(jié)點的數(shù)據(jù)計算也影響著最終的查詢效率,應(yīng)重視優(yōu)化算法細節(jié),從而有效提升不同QE節(jié)點的計算效率,本系統(tǒng)中應(yīng)采用遺傳算法與貪心算法。
(4)查詢?nèi)蝿?wù)樹設(shè)計。查詢語法樹結(jié)構(gòu)直接影響著查詢優(yōu)化目標(biāo),因此應(yīng)由語法樹結(jié)構(gòu)以及樹的不同節(jié)點完成任務(wù)樹的設(shè)計工作,通過合理調(diào)整系統(tǒng)結(jié)構(gòu)提高信息的處理效率。
實現(xiàn)查詢優(yōu)化應(yīng)以數(shù)據(jù)查詢流程為基礎(chǔ),主要分為邏輯計劃優(yōu)化、預(yù)處理模塊優(yōu)化、規(guī)則優(yōu)化以及物理優(yōu)化等過程。邏輯計劃數(shù)據(jù)結(jié)構(gòu)對應(yīng)一顆語法樹,且將查詢?nèi)蝿?wù)分解為不同模塊,通過分解信息與查詢模塊的匹配實現(xiàn)查詢?nèi)蝿?wù)的無歧義檢索。預(yù)處理主要去除冗余部分,實現(xiàn)預(yù)期的工作目標(biāo)。規(guī)則優(yōu)化確保查詢服務(wù)契合邏輯計劃,確保無論數(shù)據(jù)發(fā)生怎樣變化,其均可以在語法樹結(jié)構(gòu)中體現(xiàn)邏輯關(guān)系。物理優(yōu)化主要根據(jù)系統(tǒng)的狀態(tài)進行查詢計算,通過調(diào)用邏輯計劃,形成最優(yōu)路徑。在查詢優(yōu)化策略過程中需要合理的想象,要在考慮非查詢?nèi)蝿?wù)的基礎(chǔ)上,滿足實際的查詢?nèi)蝿?wù)工作需求,結(jié)合使用列式存儲與應(yīng)用模型關(guān)系,確保關(guān)系代數(shù)的優(yōu)化操作拓展至數(shù)據(jù)庫建設(shè)與實際應(yīng)用過程中,從而達到預(yù)期的查詢優(yōu)化設(shè)計結(jié)果。
隨著計算機硬件技術(shù)的快速發(fā)展,內(nèi)存的使用效率與使用量也得到進一步提升,作為提高數(shù)據(jù)庫應(yīng)用效率的關(guān)鍵因素,查詢優(yōu)化可以促使分布式列式數(shù)據(jù)庫得到更好發(fā)展,從而有效推動數(shù)據(jù)庫應(yīng)用技術(shù)的發(fā)展與不斷進步。