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