張翔熙,王宏志
(哈爾濱工業(yè)大學 海量數(shù)據(jù)計算研究中心,哈爾濱 150001)
作為現(xiàn)代軟件系統(tǒng)中至關(guān)重要的一部分,數(shù)據(jù)庫系統(tǒng)一直在軟件系統(tǒng)中為數(shù)據(jù)存儲、數(shù)據(jù)控制與數(shù)據(jù)分析提供關(guān)鍵的支撐。然而,隨著數(shù)據(jù)庫系統(tǒng)工業(yè)實踐日趨復雜、理論基礎(chǔ)日趨完備,現(xiàn)代數(shù)據(jù)庫系統(tǒng)往往有成百上千個可選配置參數(shù)與調(diào)優(yōu)選項,對數(shù)據(jù)庫管理員的心智負擔也日趨沉重;同時,大規(guī)模分布式高吞吐量的現(xiàn)代數(shù)據(jù)庫系統(tǒng)應用,也對數(shù)據(jù)庫查詢存儲優(yōu)化等問題提出了更高的要求。
為了解決這些問題,以深度學習為代表的統(tǒng)計學習方法的智慧數(shù)據(jù)庫系統(tǒng)技術(shù)應運而生。借助統(tǒng)計學習技術(shù),智慧數(shù)據(jù)庫系統(tǒng)在配置、優(yōu)化、設(shè)計、監(jiān)測等多個子領(lǐng)域上分別開辟了新的研究方向與研究熱點。智慧配置能夠顯著降低數(shù)據(jù)庫管理人員心智負擔,降低因配置不當造成的資源開銷與浪費;智慧優(yōu)化能夠在過去數(shù)據(jù)庫系統(tǒng)優(yōu)化理論的基礎(chǔ)上進一步突破,通過統(tǒng)計學習的手段來解決傳統(tǒng)方法因復雜度、近似比等理論限制而難以完成的優(yōu)化任務;智慧設(shè)計能夠根據(jù)不同的工作流,自適應地改變索引與存儲的數(shù)據(jù)結(jié)構(gòu);智慧監(jiān)測通過時間序列分析等手段,自動提前發(fā)現(xiàn)運行異常,規(guī)避運維風險。
在智慧數(shù)據(jù)庫系統(tǒng)中的一個典型任務,就是對于來自語義、數(shù)據(jù)庫結(jié)構(gòu)、運行環(huán)境等多個領(lǐng)域的特征進行向量化的表征與綜合。通過通用化的建模手段,解決智慧數(shù)據(jù)庫系統(tǒng)上多領(lǐng)域特征與綜合中的問題與困難,將能夠作為底層支撐技術(shù),為更加復雜的數(shù)據(jù)庫系統(tǒng)模型提供必要的特征側(cè)支撐。
本文針對智慧數(shù)據(jù)庫系統(tǒng)上的多領(lǐng)域特征表征與多領(lǐng)域特征綜合兩個關(guān)鍵問題,建立了一套能夠綜合結(jié)構(gòu)、語義等特征的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)與體系,并在具體的預測任務與百萬級真實樣本上進行了驗證與評估。該系統(tǒng)具有一定的可擴展性,可以作為底層結(jié)構(gòu)參與到更加復雜與困難的智慧數(shù)據(jù)庫系統(tǒng)模型之中。
多領(lǐng)域特征表征(multi-field feature representation)是智慧數(shù)據(jù)庫系統(tǒng)中的常見問題。與圖像識別等傳統(tǒng)單領(lǐng)域的任務不同,數(shù)據(jù)庫系統(tǒng)中某個查詢的執(zhí)行情況與查詢語句、數(shù)據(jù)結(jié)構(gòu)、運行環(huán)境等多個領(lǐng)域的信息都有關(guān)聯(lián)。為了能夠通過深度學習等統(tǒng)計學習手段,解決智慧數(shù)據(jù)庫系統(tǒng)上的預測任務,這些多領(lǐng)域的特征必須通過適當?shù)奶幚怼⒔馕龀赡軌虮簧窠?jīng)網(wǎng)絡(luò)模型處理與分析的張量形式。對此,本文將多領(lǐng)域特征分為語義特征、結(jié)構(gòu)特征、輔助特征3類,分別進行向量化表征工作。
語義特征是指以SQL語句為代表的查詢?nèi)蝿彰枋鲋邪娜蝿招畔?。對于語義特征,首先過濾掉SQL語句中的數(shù)字及尾部分號,保留包含表名、屬性名、保留字、運算符在內(nèi)的134個詞構(gòu)成的詞表。然后,對于單條SQL語言輸入,按照輸入中各個詞的位置,得到一個multi-hot編碼的、各個位置代表詞出現(xiàn)次數(shù)的134維向量。將該向量經(jīng)過一個可訓練的詞向量矩陣變換后,得到32維的、包含了查詢語義特征的張量輸出(在綜合時稱為lexical_embedding)。
結(jié)構(gòu)特征是指查詢所指涉的數(shù)據(jù)表、屬性集、選擇條件包含的任務信息。對于結(jié)構(gòu)特征,先把查詢所在表的ID進行編碼與嵌入,得到61維(與屬性總數(shù)相同)的table_embedding張量結(jié)果;再使用直方圖預估的方式,對于查詢的WHERE子句中,由AND連接的每一個屬性選擇條件,獨立地估計該條件所篩選的元組比例(selectivity),組成一個與屬性總數(shù)目等長的61維向量range_vector,將其與table_embedding逐位相乘后,得到cross_embedding輸出;另外,通過常量的方式計算一個61維的mask向量,使得其中只有該表對應的屬性位置填寫該表的總行數(shù),再與前述的range_vector逐位相乘,獲取hist_embedding輸出。將3個輸出合并,就得到了代表結(jié)構(gòu)領(lǐng)域特征的183維的張量輸出(在綜合時稱為structure_embedding)。
除結(jié)構(gòu)與語義方面的特征之外,在系統(tǒng)運行的過程中,往往有其它的信息,同樣影響預測任務的輸出結(jié)果,這些結(jié)果可以通過連加或連乘的方式進行綜合,得到可以輔助訓練的稠密特征輸入。在實驗任務中,通過常量的手段按照查詢涉及的表來獲取對應表的靜態(tài)總數(shù),與前述的range_vector進行折疊相乘,就得到了一個一維的標量輸出(在綜合時稱為cross_bias)。
經(jīng)過上述的操作,就將多種不同領(lǐng)域的特征,通過網(wǎng)絡(luò)操作進行綜合,分別得到了3個不同領(lǐng)域的輸出張量。本文設(shè)計的方式能夠解決多領(lǐng)域特征的表征問題,并為多領(lǐng)域特征的綜合問題提供了技術(shù)基礎(chǔ);相應方法的有效性將在實驗章節(jié)中得到進一步的驗證。
在底層獲取了3個不同途徑的多領(lǐng)域特征表征之后,還需要解決多領(lǐng)域特征的綜合問題。要想實現(xiàn)多種不同領(lǐng)域特征的綜合,簡單直接相連或加和可能會帶來預測性能上的嚴重損失,往往需要設(shè)計符合問題性質(zhì)的綜合結(jié)構(gòu)。
為了驗證不同綜合結(jié)構(gòu)對于預測性能帶來的影響,本文設(shè)計并實現(xiàn)了3種彼此不同的多領(lǐng)域特征綜合方式,并通過實驗手段,探究不同綜合方式對于智慧數(shù)據(jù)庫系統(tǒng)上預測問題帶來的影響。
權(quán)基綜合是相對最直觀的多領(lǐng)域特征綜合方式。由于各個領(lǐng)域?qū)τ谧罱K預測目標的貢獻不同,因此使用3個可學習的權(quán)重變量,通過softmax[1]轉(zhuǎn)化為3個總和為1的非負權(quán)重后,來綜合各個領(lǐng)域的預測結(jié)果。其中,單個領(lǐng)域的預測結(jié)果,對于結(jié)構(gòu)領(lǐng)域和語義領(lǐng)域,通過ELU[2]激活的單層感知機網(wǎng)絡(luò)進行單目標的預測;對于輔助稠密特征,則使用可訓練的線性變換進行預測。這樣,3個預測結(jié)果在3個非負權(quán)重的加權(quán)下,得到最終用于計算損失的輸出。
感知機綜合是通過神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),對輸入的3個領(lǐng)域特征進行進一步的抽象與交叉。對于上節(jié)中輸出的lexical_embedding、structure_embedding與cross_bias3個張量,通過串接的方式得到一個長張量,作為感知機的輸入。隨后,通過ELU激活的多層感知機進行處理與輸出,最終得到單目標的預測結(jié)果。這種方式在綜合時引入了更多的非線性因素,提高了網(wǎng)絡(luò)的綜合能力。
虛線綜合則從損失函數(shù)的角度,考慮多領(lǐng)域特征的綜合問題。首先,使用與權(quán)基綜合相似的方式,讓每一個領(lǐng)域都給出一個單目標的預測輸出;再通過3個可學習的權(quán)重,將預測輸出結(jié)果進行線性加權(quán)。然而,簡單的線性加權(quán)會導致部分領(lǐng)域預測一個負數(shù),而其它領(lǐng)域輸出巨大正數(shù)的現(xiàn)象,這種拮抗會降低系統(tǒng)的穩(wěn)定性。因此,對于每一個領(lǐng)域的預測結(jié)果在加權(quán)前,通過虛線連接到樣本標簽,計算一個用于輔助的均方誤差;在訓練時,將輔助誤差與真實誤差進行加權(quán)再梯度下降。這樣,通過虛線誤差能夠強制每個領(lǐng)域進行穩(wěn)定的訓練,提高預測的精準性與穩(wěn)定性。
為了驗證本文提出的多領(lǐng)域特征表征與綜合方法的有效性,對比3種多領(lǐng)域特征綜合方法的優(yōu)劣,本節(jié)將在真實運行環(huán)境下收集樣本并進行訓練比對。
實驗樣本的生成,依賴的數(shù)據(jù)表為tpch-gen[3]標準開源程序所生成的、存儲在MariaDB[4]開源數(shù)據(jù)庫系統(tǒng)上的tpc-h[5]標準數(shù)據(jù)庫。包含8個表、61個屬性、356萬行記錄,其主鍵、外鍵、索引等都符合tpc-h的規(guī)范。在此基礎(chǔ)上,通過程序隨機生成各個表上的SQL查詢語句。其FROM部分隨機為8個表中的任意一個,SELECT部分任意隨機選擇該表上的任意數(shù)量屬性,WHERE部分隨機生成隨機數(shù)目表上合法屬性的等值或不等值查詢子句構(gòu)成合取式。通過這樣的操作,生成了77萬條查詢語句,并在單機的MariaDB上分別運行并計時。
經(jīng)過上述過程,收集到77萬條樣本,將模型在TensorFlow[6]框架實現(xiàn)后,基于純CPU的運行環(huán)境分別進行訓練與誤差統(tǒng)計。對于只使用語義信息(lexical_only)、結(jié)構(gòu)信息(structural_only)、權(quán)基綜合(softmax_model)、感知機綜合(deep_cross)、虛線綜合(boost_model)等5個不同模型的運行結(jié)果,分別按照迷你批次序號,與對應的損失函數(shù)值繪制圖像,如圖1所示。
圖1 各模型全收斂曲線
由于部分圖像不夠清晰,對于圖1中幾個在2×1 013位置收斂的曲線、放大尾部部分顯示如圖2所示;對于前4 000個迷你批次,放大頭部部分顯示如圖3所示,以觀察不同模型收斂效率的區(qū)別。
圖2 收斂曲線尾部放大圖
圖3 收斂曲線頭部放大圖
分析以上數(shù)據(jù),可以得到以下結(jié)論:
(1)各曲線都能夠有效收斂。可見本文提出的多領(lǐng)域特征表示方式,能夠從輸入特征中提取出有效信息,讓查詢時間預測這一常見的智慧數(shù)據(jù)庫問題有較好的實驗結(jié)果,驗證了第一節(jié)內(nèi)容的有效性;
(2)從圖2中可以清晰地看到:不論是語義信息還是結(jié)構(gòu)信息,如果只使用單獨一個領(lǐng)域的信息,在最終的模型效果上都會明顯弱于多領(lǐng)域模型,證明了多領(lǐng)域特征綜合的必要性;
(3)3個多領(lǐng)域綜合方式都能夠有效地進行特征綜合,在最終效果上虛線綜合最好,感知機綜合其后,最后是權(quán)基綜合,證明了本文提出的方法的有效性和創(chuàng)新性;
(4)在收斂速度上,感知機綜合模型收斂非???,最終收斂位置第二優(yōu);虛線綜合雖然明顯最終效果更好,但是由于輔助損失對于主要損失在前期有干擾作用,收斂速度最慢。因此,在小樣本條件下,感知機綜合效果更好;大樣本量下,則虛線綜合方式更優(yōu)??梢?,本文提出的兩種多領(lǐng)域特征綜合方式之間,能夠根據(jù)現(xiàn)實場景互補,具有較好的適應性。
針對智慧數(shù)據(jù)庫系統(tǒng)中的預測模型任務,本文從查詢側(cè)特征表示的角度出發(fā),建立了與查詢相關(guān)的多領(lǐng)域特征的表示方法與3種綜合方法。通過在大量真實數(shù)據(jù)上的實驗驗證,證明了本文所提出的多領(lǐng)域特征表示方法與綜合方法的有效性,尤其是虛線綜合與感知機綜合兩種方式,分別在收斂效果與收斂速度兩方面取得了最優(yōu)的效果,能夠為后續(xù)更加復雜的智慧數(shù)據(jù)庫系統(tǒng)預測任務提供特征側(cè)的幫助。
考慮到目前同一個智慧數(shù)據(jù)庫系統(tǒng)中往往有多個智慧方法需要得到使用,如何通過多任務學習的手段,降低多個模型共同使用帶來的額外開銷,將是下一步工作重點。