孟小峰 馬超紅 楊 晨
(中國人民大學信息學院 北京 100872)
數(shù)據(jù)庫系統(tǒng)已經(jīng)在商業(yè)中成熟應用,表現(xiàn)為產(chǎn)品級數(shù)據(jù)庫系統(tǒng)如Oracle,PostgreSQL等持續(xù)穩(wěn)定地運行,說明經(jīng)典的數(shù)據(jù)庫算法已經(jīng)趨于完善,且基于這些算法的性能優(yōu)化也已經(jīng)達到很好的程度.但大數(shù)據(jù)時代下,數(shù)據(jù)庫系統(tǒng)需要處理的數(shù)據(jù)量不斷增加,工作負載也面臨著快速而多變的特性,對數(shù)據(jù)庫系統(tǒng)提出了更高的要求.一方面數(shù)據(jù)量持續(xù)增大,期望數(shù)據(jù)庫系統(tǒng)具有更快的處理速度;另一方面查詢負載的快速變化及其多樣性要求數(shù)據(jù)庫系統(tǒng)能夠動態(tài)調(diào)整系統(tǒng)參數(shù)以達到最佳運行時狀態(tài).傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)優(yōu)化技術(shù)和靜態(tài)地依靠數(shù)據(jù)庫管理員(database administrator, DBA)對系統(tǒng)進行參數(shù)配置的方式,已不能處理新應用場景下對系統(tǒng)性能的優(yōu)化.在人工智能蓬勃發(fā)展的推動下,將機器學習與數(shù)據(jù)庫系統(tǒng)有機結(jié)合來改進系統(tǒng)性能成為本領(lǐng)域的研究熱點,亦稱為機器學習化的數(shù)據(jù)庫系統(tǒng)研究.
在2015年ACM SIGMOD會議上,Ré等人[1]最早明確提出關(guān)于機器學習與數(shù)據(jù)庫系統(tǒng)結(jié)合的思考,并展開對數(shù)據(jù)庫領(lǐng)域結(jié)合機器學習技術(shù)的激烈討論.機器學習以其優(yōu)異的特性迅速在大數(shù)據(jù)驅(qū)動的應用領(lǐng)域普及并逐漸成為主流.在機器學習的浪潮下,數(shù)據(jù)庫系統(tǒng)應處于一個什么樣的位置?數(shù)據(jù)庫系統(tǒng)是否會在這股浪潮下被沖擊出歷史的舞臺?由此,數(shù)據(jù)庫界開始了構(gòu)建機器學習化數(shù)據(jù)庫系統(tǒng)的探索.
歸納起來,我們認為機器學習化的數(shù)據(jù)庫系統(tǒng)研究得到大家的普遍關(guān)注有3方面原因:
Fig. 1 Ratio of query execution time in PostgreSQL圖1 PostgreSQL數(shù)據(jù)庫系統(tǒng)查詢執(zhí)行時間占比
由此看來,CPU已成為數(shù)據(jù)庫系統(tǒng)的主要瓶頸.可見,以優(yōu)化IO為主的傳統(tǒng)數(shù)據(jù)庫系統(tǒng)優(yōu)化方法,難以優(yōu)化當前的性能瓶頸,因此需要尋求新的途徑.
2)大量面向機器學習的現(xiàn)代硬件加速器為解決數(shù)據(jù)庫系統(tǒng)的CPU性能瓶頸提供了機會.機器學習技術(shù)的發(fā)展,新的加速算法、新硬件的迭代速度越來越快,但其更多集中在計算部件,如眾核處理器、高性能處理器、GPU處理器以及智能化處理器等,預計到2025年GPU的性能可以再提高1 000倍[3-4].然而這些成果和數(shù)據(jù)庫系統(tǒng)的發(fā)展關(guān)系較遠.對于數(shù)據(jù)庫系統(tǒng)而言,傳統(tǒng)的單線程算法和順序訪問特性不適合在現(xiàn)代加速器上運行.如B樹索引,基于二分查找的法則對數(shù)據(jù)進行掃描.而現(xiàn)代加速硬件具有高并發(fā)、多線程、速度快的眾核處理能力,這些加速器主要用于加速機器學習的并行和迭代算法,例如英偉達發(fā)布的GeForce RTX 2080 Ti擁有4 352個CUDA單元[5].顯然,數(shù)據(jù)庫系統(tǒng)要依托新的硬件加速平臺實現(xiàn)其性能優(yōu)化,必須對數(shù)據(jù)庫系統(tǒng)的算法進行重構(gòu)和改寫.因此,機器學習化數(shù)據(jù)庫系統(tǒng)的研究重點之一是將傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的順序操作轉(zhuǎn)化為并行和迭代計算,例如采用機器學習模型替換數(shù)據(jù)庫系統(tǒng)內(nèi)部的傳統(tǒng)索引結(jié)構(gòu)[3]、基數(shù)估計模型[6]等組件.
3) 數(shù)據(jù)庫系統(tǒng)還面臨著參數(shù)配置的問題,機器學習方法是解決這一問題的有效手段.數(shù)據(jù)庫系統(tǒng)具有成百個參數(shù),控制并影響著系統(tǒng)的性能,并且默認的參數(shù)配置較差,例如2016年MySQL系統(tǒng)默認其部署在僅有160MB RAM的機器上[7-8].同時,工作負載頻繁而又多樣性地快速變化已遠超出DBA的能力,導致數(shù)據(jù)庫系統(tǒng)在參數(shù)配置、系統(tǒng)管理方面缺乏快速響應和智能適配的能力.鑒于機器學習善于從訓練數(shù)據(jù)中學習經(jīng)驗,并用于預測新的未知數(shù)據(jù)[9],同時快速給出預測結(jié)果.因此可借助機器學習從數(shù)據(jù)庫系統(tǒng)長久以來的參數(shù)配置、查詢優(yōu)化等經(jīng)驗數(shù)據(jù)中,學習出不同工作負載下動態(tài)參數(shù)配置的能力,即將DBA的調(diào)優(yōu)經(jīng)驗轉(zhuǎn)化為機器學習模型,從而更好地適應快速變化的工作負載,動態(tài)地為數(shù)據(jù)庫系統(tǒng)推薦最佳的系統(tǒng)配置.
綜上,為借助機器學習算法的性能優(yōu)勢,同時利用現(xiàn)代加速硬件的特性,探索在數(shù)據(jù)庫系統(tǒng)實現(xiàn)中引入機器學習技術(shù),主要體現(xiàn)在2方面:一方面,借助機器學習的加速算法、現(xiàn)代加速器,提高數(shù)據(jù)庫系統(tǒng)的處理速度,改善數(shù)據(jù)庫系統(tǒng)的性能瓶頸;另一方面,借助機器學習的智能來提高數(shù)據(jù)庫系統(tǒng)的易用性,使得數(shù)據(jù)庫系統(tǒng)面對多樣化的工作負載能夠更加智能地動態(tài)調(diào)整數(shù)據(jù)庫系統(tǒng)的配置,即借助機器學習技術(shù)實現(xiàn)數(shù)據(jù)庫系統(tǒng)的自動化.
將機器學習的思想應用于數(shù)據(jù)庫系統(tǒng)設(shè)計與實現(xiàn)中,已經(jīng)取得較好的研究成果.數(shù)據(jù)庫系統(tǒng)中引入機器學習技術(shù)已成為當下的研究熱點.本節(jié)首先分析數(shù)據(jù)庫系統(tǒng)目前面臨的挑戰(zhàn);接著闡述機器學習化數(shù)據(jù)庫系統(tǒng)研究問題的定義;最后給出機器學習化數(shù)據(jù)庫系統(tǒng)的研究框架,并對當前的研究工作進行梳理.
數(shù)據(jù)庫系統(tǒng)已經(jīng)在行業(yè)中成熟而穩(wěn)定地運行,而大數(shù)據(jù)時代為數(shù)據(jù)庫系統(tǒng)提出了更高的要求.數(shù)據(jù)量增大,要求數(shù)據(jù)庫系統(tǒng)能夠具備更快的查詢速度、更高的系統(tǒng)吞吐量.數(shù)據(jù)的類型模式不斷增多,使得查詢工作負載具有快速而又多樣化的特點,要求數(shù)據(jù)庫系統(tǒng)能夠具備快速、準確地響應工作負載動態(tài)變化的能力.接下來從索引結(jié)構(gòu)、查詢優(yōu)化、參數(shù)配置來舉例說明數(shù)據(jù)庫系統(tǒng)目前面臨的挑戰(zhàn).
索引結(jié)構(gòu)作為一種存取模式,對于數(shù)據(jù)的高效訪問至關(guān)重要[10],并且索引結(jié)構(gòu)能夠滿足不同訪問的需求.例如B樹索引最適合范圍查詢,Hash索引適合單個關(guān)鍵字的查找.在過去的幾十年中,索引被廣泛優(yōu)化,但大多集中在提高內(nèi)存、緩存或CPU執(zhí)行效率.而傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)已進入瓶頸期,優(yōu)化空間收窄.查詢最基本的操作是順序掃描,其不能夠充分利用現(xiàn)代加速器的高并行處理能力.另一方面,傳統(tǒng)的索引結(jié)構(gòu)是通用的數(shù)據(jù)結(jié)構(gòu),并沒有利用數(shù)據(jù)的分布,現(xiàn)實數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)通常具有常見的模式,因此若已知數(shù)據(jù)的分布則幾乎可以優(yōu)化所有的數(shù)據(jù)結(jié)構(gòu)[3].
當下數(shù)據(jù)庫系統(tǒng)的規(guī)模不斷增大,復雜性增加,處理的數(shù)據(jù)量越來越大,類型也不斷豐富.由此帶來了查詢工作負載快速而又多樣性的變化.查詢優(yōu)化和系統(tǒng)參數(shù)配置一直是數(shù)據(jù)庫系統(tǒng)需要解決的問題[7,11].傳統(tǒng)的數(shù)據(jù)庫系統(tǒng),需要大量的時間對特定工作負載進行調(diào)優(yōu).這些調(diào)優(yōu)基于有經(jīng)驗的DBA,而當下工作負載快速而又多樣性的變化使得數(shù)據(jù)庫系統(tǒng)的適應能力降低.面對不同工作負載,數(shù)據(jù)庫系統(tǒng)的性能差異較大,不能動態(tài)地調(diào)整為最佳運行時狀態(tài).
機器學習為解決這些問題帶來了機會.一方面,傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)問題,例如索引結(jié)構(gòu)用于建立查找鍵和數(shù)據(jù)記錄之間的關(guān)聯(lián)[3],對應關(guān)鍵字與位置之間的映射.這些數(shù)據(jù)之間關(guān)鍵字與存儲位置的映射關(guān)系,可以作為機器學習的訓練集,為機器學習模型的訓練提供了先決條件,因此機器學習在數(shù)據(jù)庫系統(tǒng)中的應用具有天然的數(shù)據(jù)優(yōu)勢.同時,將索引結(jié)構(gòu)轉(zhuǎn)化為機器學習模型后,可以進一步借助硬件加速器來提高數(shù)據(jù)庫系統(tǒng)的處理速度.
另一方面,數(shù)據(jù)庫管理系統(tǒng)[11]存在著參數(shù)調(diào)優(yōu)、工作負載預測等問題,而機器學習善于利用已有的數(shù)據(jù)進行預測,這為機器學習在數(shù)據(jù)庫系統(tǒng)中的應用帶來了切入點.查詢優(yōu)化、參數(shù)配置長久以來積累了大量DBA的調(diào)優(yōu)經(jīng)驗.機器學習能夠從查詢優(yōu)化、參數(shù)配置等的調(diào)優(yōu)數(shù)據(jù)中學習到模式,進行快速預測.從而面對快速多變的工作負載,動態(tài)地為數(shù)據(jù)庫系統(tǒng)提供最佳的運行配置,使得數(shù)據(jù)庫系統(tǒng)變得更加自動化.機器學習為數(shù)據(jù)庫系統(tǒng)的性能優(yōu)化提供了機會.
綜上,設(shè)計并實現(xiàn)機器學習化數(shù)據(jù)庫系統(tǒng)具有重要研究意義.學術(shù)界如CMU,MIT,與工業(yè)界如Oracle,IBM,HUAWEI等,都在不斷探索機器學習化數(shù)據(jù)庫系統(tǒng)的研究.
機器學習化數(shù)據(jù)庫系統(tǒng)泛指結(jié)合機器學習的方法、模型來替換數(shù)據(jù)庫系統(tǒng)的內(nèi)部組件,或?qū)C器學習的算法引入到數(shù)據(jù)庫系統(tǒng)設(shè)計中.借助機器學習的加速算法、硬件加速平臺來幫助數(shù)據(jù)庫系統(tǒng)實現(xiàn)性能優(yōu)化,從而突破數(shù)據(jù)庫系統(tǒng)性能瓶頸.
機器學習,特別是深度學習在傳統(tǒng)上被認為計算開銷巨大、耗費時間,但是隨著下一代硬件的不斷發(fā)展,例如GPU,TPU等加速硬件的出現(xiàn),這些看似是障礙的限制正在逐步地消除,深度學習用于數(shù)據(jù)庫系統(tǒng)不僅在理論上,而且在實踐上也變得越來越有可能.數(shù)據(jù)庫系統(tǒng)和機器學習都是面向數(shù)據(jù)驅(qū)動的應用[11],由此看來,2個領(lǐng)域的結(jié)合將極大地推動大數(shù)據(jù)驅(qū)動應用領(lǐng)域的發(fā)展.
機器學習化的數(shù)據(jù)庫系統(tǒng)研究帶來了機遇,同時也帶來了挑戰(zhàn).例如機器學習化的B樹索引查詢速度比傳統(tǒng)B樹索引快1.5~3倍,機器學習化的布隆過濾器比傳統(tǒng)布隆過濾器的誤報率更低[3].但機器學習模型的計算需要時間,當插入新數(shù)據(jù)時模型的重訓練問題需要考慮.再者,基于深度學習的查詢優(yōu)化模型在10 000次訓練后可以超過傳統(tǒng)查詢優(yōu)化器的優(yōu)化性能[12].但深度學習的模型需要大量訓練數(shù)據(jù),為達到模型收斂,需要進行大量多次的訓練,因此在前期的優(yōu)化效果較差.
當前的機器學習化研究工作主要針對數(shù)據(jù)庫系統(tǒng)的某一組件,采用機器學習化的模型來替換或輔助數(shù)據(jù)庫系統(tǒng)組件的操作.而面對龐大的數(shù)據(jù)庫管理系統(tǒng),如果每一組件都附著一個機器學習化的模型,對于數(shù)據(jù)庫系統(tǒng)來說是極大的累贅.眾所周知,機器學習的訓練需要時間和資源,必然會增加數(shù)據(jù)庫系統(tǒng)的能耗.并且這些模型的重訓練、模型更新、模型的統(tǒng)一管理等都值得進一步研究和探討.在數(shù)據(jù)庫系統(tǒng)中結(jié)合機器學習,需要探索這2種技術(shù)領(lǐng)域的差異,并且必然需要付出極大的努力來解決在機器學習化數(shù)據(jù)庫系統(tǒng)研究進程中的這些差異[1,13].這些問題都促使著數(shù)據(jù)庫領(lǐng)域思考數(shù)據(jù)庫系統(tǒng)的發(fā)展以何種方式來促進機器學習與數(shù)據(jù)庫系統(tǒng)的交叉.
由此看來,迎接機器學習化數(shù)據(jù)庫系統(tǒng)發(fā)展機遇的同時,也需要面臨新的研究問題和挑戰(zhàn).數(shù)據(jù)庫管理系統(tǒng)經(jīng)過幾十年的發(fā)展,已經(jīng)具備自己的獨有特點,因此機器學習算法在數(shù)據(jù)庫系統(tǒng)中的應用不是簡單的算法搬移,需要針對數(shù)據(jù)庫系統(tǒng)的特點和不同的應用場景進行設(shè)計.機器學習化的數(shù)據(jù)庫系統(tǒng)研究需要探索并不斷解決數(shù)據(jù)庫系統(tǒng)和機器學習領(lǐng)域的差異,即解決機器學習技術(shù)應用于數(shù)據(jù)庫系統(tǒng)的適配性問題.這對數(shù)據(jù)庫領(lǐng)域的研究者提出了新的要求,不僅需要深入了解數(shù)據(jù)庫系統(tǒng),同時需要掌握機器學習技術(shù)的靈活應用,這些都需要數(shù)據(jù)庫研究者進一步探索.
現(xiàn)階段,在數(shù)據(jù)庫領(lǐng)域已經(jīng)開始探索利用機器學習來改善性能,機器學習與數(shù)據(jù)庫系統(tǒng)的結(jié)合作為一個新的研究領(lǐng)域,受到大家的廣泛關(guān)注.
數(shù)據(jù)庫系統(tǒng)與機器學習結(jié)合的概念在文獻[13]中被進一步提出后,機器學習化數(shù)據(jù)庫系統(tǒng)的研究逐漸成為數(shù)據(jù)庫領(lǐng)域廣受關(guān)注的研究方向.
數(shù)據(jù)庫系統(tǒng)主要包含底層組件、核心組件以及應用層[10,14-15].底層組件主要包括存儲在底層的數(shù)據(jù)庫數(shù)據(jù)、數(shù)據(jù)庫管理系統(tǒng)的配置以及針對數(shù)據(jù)庫系統(tǒng)的硬件加速方案等.核心層組件主要包括查詢處理、事務處理、存儲管理等,其中存儲管理涉及緩沖區(qū)管理、內(nèi)外存交換、索引等存取模式的管理等.應用層用于用戶應用程序與數(shù)據(jù)庫之間的交互.
圖2為數(shù)據(jù)庫系統(tǒng)的整體架構(gòu),同時表明目前機器學習化數(shù)據(jù)庫系統(tǒng)研究工作的分布和研究熱度.其中白色框表示目前尚未研究基于該組件的機器學習化.本文針對搜集到的文獻資料,在分析歸納的基礎(chǔ)上得出2017年至2019年2月機器學習化數(shù)據(jù)庫系統(tǒng)研究現(xiàn)狀的分布.在近2年的36篇文獻中,針對數(shù)據(jù)庫系統(tǒng)參數(shù)配置的研究占到36%(13篇);機器學習化的存儲管理占28%(10篇);針對查詢優(yōu)化機器學習化研究占19%(7篇);其他組件的機器學習化研究占17%(6篇),主要為應用層和硬件加速解決方案.
從圖2可以看出,機器學習化數(shù)據(jù)庫系統(tǒng)雖然是目前廣受關(guān)注的研究領(lǐng)域,但傳統(tǒng)數(shù)據(jù)庫系統(tǒng)作為一個發(fā)展成熟的領(lǐng)域,其包含的組件數(shù)目龐大.目前的機器學習化研究只針對數(shù)據(jù)庫系統(tǒng)中的部分模塊,數(shù)據(jù)庫領(lǐng)域仍然有很多方面尚未被涉及.研究最多的領(lǐng)域為機器學習化的參數(shù)配置,結(jié)合機器學習技術(shù)對數(shù)據(jù)庫系統(tǒng)參數(shù)進行配置要實現(xiàn)的目標是自動化數(shù)據(jù)庫管理系統(tǒng).本文主要從存儲管理、查詢優(yōu)化、自動化數(shù)據(jù)庫管理系統(tǒng)3個方面對數(shù)據(jù)庫系統(tǒng)的機器學習化研究進行闡述.
Fig. 2 Heat distribution of research on learned database systems圖2 機器學習化數(shù)據(jù)庫系統(tǒng)研究熱度分布
1) 存儲管理的機器學習化研究.存儲管理[10]主要實現(xiàn)的功能有:緩沖區(qū)管理、內(nèi)外存交換、外存管理,同時包含對存取模式、存取路徑的管理.主存和緩沖區(qū)管理器作為數(shù)據(jù)庫系統(tǒng)不可缺少的組成部件,頁面置換策略、地址轉(zhuǎn)換等已開始機器學習化研究的探索[16-17].作為數(shù)據(jù)庫系統(tǒng)的重要存取模式,在索引文件記錄管理方面研究最多的是索引結(jié)構(gòu),索引作為數(shù)據(jù)庫系統(tǒng)中重要的支持對數(shù)據(jù)進行高效存取的數(shù)據(jù)結(jié)構(gòu),建立了查找關(guān)鍵字與數(shù)據(jù)記錄的關(guān)聯(lián).Kraska等人[3]提出機器學習化的索引結(jié)構(gòu)是這一領(lǐng)域的開創(chuàng)性研究.本文第2節(jié)將介紹存儲管理的機器學習化研究.
2) 查詢優(yōu)化的機器學習化研究.查詢處理是數(shù)據(jù)庫管理系統(tǒng)(database management system, DBMS)中一個重要的部件集合,能夠?qū)⒂脩舻牟樵兒蛿?shù)據(jù)修改等操作命令通過語法分析,并進行物理優(yōu)化、邏輯優(yōu)化等操作,轉(zhuǎn)換為數(shù)據(jù)庫系統(tǒng)的操作序列——查詢計劃,最終提交給數(shù)據(jù)庫系統(tǒng)執(zhí)行引擎來執(zhí)行這些操作[10,15].查詢處理目前的機器學習化研究主要集中在查詢優(yōu)化方面.查詢編譯、查詢算子構(gòu)造、查詢執(zhí)行等目前尚未進行機器學習化研究.根據(jù)查詢優(yōu)化器架構(gòu)可以將查詢優(yōu)化的機器學習化研究分為3個方面,分別為連接次序枚舉、基數(shù)估計、代價模型.本文第3節(jié)將對查詢優(yōu)化的機器學習化研究進行詳細介紹.
3) 自動化數(shù)據(jù)庫管理系統(tǒng)的研究.數(shù)據(jù)庫系統(tǒng)的參數(shù)配置對于數(shù)據(jù)庫系統(tǒng)的性能十分重要[8,18],參數(shù)優(yōu)化是任何數(shù)據(jù)密集型應用程序必須考慮的方面之一.數(shù)據(jù)庫領(lǐng)域的參數(shù)調(diào)優(yōu)是長久以來的研究問題[8,18-19],因此該研究方向借助機器學習的方法開展較早,數(shù)據(jù)庫領(lǐng)域無論是學術(shù)界還是工業(yè)界都在探索實現(xiàn)數(shù)據(jù)庫系統(tǒng)的自動化管理.數(shù)據(jù)庫系統(tǒng)真正地自動化管理應當是系統(tǒng)的所有方面都由一個集成的規(guī)劃組件來控制,而不是系統(tǒng)中的每一個組件配備一個管理工具.機器學習的發(fā)展、硬件的改善以及自適應數(shù)據(jù)庫架構(gòu)的發(fā)展使得自動化管理變得更加可能.Pavlo等人提出自主數(shù)據(jù)庫管理系統(tǒng)(self-driving database management systems)的概念[20],并構(gòu)建了第1個自主數(shù)據(jù)庫系統(tǒng)Peloton[21].本文第4節(jié)將對自動化數(shù)據(jù)庫管理系統(tǒng)的研究進行闡述.
4) 其他組件的機器學習化研究.數(shù)據(jù)庫系統(tǒng)應用層也已經(jīng)開始機器學習化的探索,例如近似查詢處理(approximate query processing, AQP)[22]、數(shù)據(jù)探索[23-26]等領(lǐng)域.Park等人[22]提出數(shù)據(jù)庫學習(database learning)的概念,即如果存在極其準確的關(guān)于底層數(shù)據(jù)的統(tǒng)計模型,那么不需要訪問底層數(shù)據(jù),只需要模型即可.并將database learning與AQP結(jié)合,從過去的近似查詢結(jié)果中學習,用于改善對底層數(shù)據(jù)的后驗知識.NNCubes[23]將神經(jīng)網(wǎng)絡作為數(shù)據(jù)立方體技術(shù)的替代模型.Cumin等人[24]采用基于決策樹的機器學習方法來自動地構(gòu)建查詢重寫.Guilly等人[25]基于聚類和二叉決策樹的機器學習算法提出針對數(shù)據(jù)探索的SQL查詢完成算法(SQL query completion).Zolaktaf[26]采用特定領(lǐng)域的推薦系統(tǒng)來幫助關(guān)系數(shù)據(jù)庫環(huán)境下的數(shù)據(jù)探索和查詢構(gòu)建.Martins[27]提出一種半自動化的方法——智能符號機器(intelligent semiotic machine, iSM),該方法考慮了用戶的角度和目的,從而交互地生成定制查詢,促進個性化的數(shù)據(jù)探索.應用層位于數(shù)據(jù)庫系統(tǒng)的外層,本文不做過多介紹.
用硬件來加速數(shù)據(jù)庫系統(tǒng)也是比較熱的研究方向,基于GPU加速的數(shù)據(jù)庫系統(tǒng)層出不窮,例如OmniSci Core[28],Kinetica[29],BlazingSQL[30],Blazegraph[31],Pg-strom[32]等.同時基于可編程門陣列(field programmable gate arrays, FPGA)的硬件加速解決方案也有很多研究成果,如Centaur[33],LINQits[34]等.上述基于FPGA的研究工作大多集中在加速DBMS的操作上,Mahajan等人[35]邁出了應用FPGA來加速數(shù)據(jù)庫內(nèi)高級分析解決方案的第1步.
機器學習算法不斷改進、新硬件設(shè)計不斷出現(xiàn),這些領(lǐng)域的進步都推動了數(shù)據(jù)革命.可編程加速器、現(xiàn)代加速器等正在進入數(shù)據(jù)驅(qū)動的應用領(lǐng)域[36-37],同時人工智能芯片的研究[38-39]也不斷深入.在數(shù)據(jù)庫領(lǐng)域?qū)崿F(xiàn)更好的硬件加速解決方案,促進機器學習化數(shù)據(jù)庫系統(tǒng)的研究,以搭上現(xiàn)代硬件發(fā)展的快車,是值得未來研究的課題之一.
任何一個查詢或修改動作都可視為事務處理,事務處理包括并發(fā)控制、日志恢復、事務管理等,對數(shù)據(jù)庫系統(tǒng)至關(guān)重要.作為數(shù)據(jù)庫系統(tǒng)核心組件之一的事務處理,目前尚未進行機器學習化研究.事務是組成一組的若干個查詢和其他動作[10],是獨立的原子單位,事務的執(zhí)行需滿足4個特性:原子性、一致性、隔離性、持久性.事務不涉及對數(shù)據(jù)的直接存取,同時事務的執(zhí)行過程要求可追溯、可解釋.機器學習化的模型建立在數(shù)據(jù)基礎(chǔ)之上;某些機器學習模型尤其深度學習模型的可解釋性較差.因此事務處理模塊的研究不具備直接應用機器學習技術(shù)的天然條件——數(shù)據(jù).針對事務處理模塊中的并發(fā)控制、故障恢復等,是否可以從整體考慮,提前預測超時、死鎖等影響系統(tǒng)執(zhí)行性能的瓶頸,從而進行優(yōu)化?對事務處理、并發(fā)控制、故障恢復等進行基于機器學習模型的優(yōu)化研究,有待進一步思考.同時針對機器學習化數(shù)據(jù)庫系統(tǒng)的可解釋性研究也值得探討.
數(shù)據(jù)庫管理系統(tǒng)作為成熟的商業(yè)化產(chǎn)品,是一個龐大的研究領(lǐng)域.現(xiàn)代數(shù)據(jù)庫系統(tǒng)已經(jīng)超越了傳統(tǒng)的關(guān)系型DBMS研究領(lǐng)域,包括在數(shù)據(jù)庫系統(tǒng)之上構(gòu)建搜索引擎,進行數(shù)據(jù)集成、數(shù)據(jù)挖掘等復雜應用程序.機器學習化的數(shù)據(jù)庫系統(tǒng)同樣也面臨著龐大的研究領(lǐng)域,就目前的研究工作來看,僅僅是整個數(shù)據(jù)庫領(lǐng)域中極小的部分,未來需要探索的方面還有很多.
本文針對當前機器學習化數(shù)據(jù)庫系統(tǒng)已有的研究工作進行歸納總結(jié),從3個角度對機器學習化數(shù)據(jù)庫系統(tǒng)的研究工作進行劃分:1)存儲管理的機器學習化研究,主要從索引結(jié)構(gòu)和緩沖區(qū)管理2方面來介紹;2)查詢優(yōu)化的機器學習化研究;3)自動化數(shù)據(jù)庫管理系統(tǒng)的研究.
存儲管理主要實現(xiàn)的功能:緩沖區(qū)管理、內(nèi)外存交換、外存管理,同時包含對存取模式、存取路徑的管理[17].索引結(jié)構(gòu)作為數(shù)據(jù)庫系統(tǒng)中重要的存取模式,支持對數(shù)據(jù)進行高效存取,建立了查找關(guān)鍵字與數(shù)據(jù)記錄之間的關(guān)聯(lián).基于索引結(jié)構(gòu)的機器學習化研究工作層出不窮.主存和緩沖區(qū)管理器作為數(shù)據(jù)庫系統(tǒng)不可缺少的組成部件,頁面置換策略、地址轉(zhuǎn)換等已經(jīng)開始機器學習化的探索[16-17].本節(jié)從索引結(jié)構(gòu)和緩沖區(qū)管理2個方面對機器學習化的存儲管理進行介紹.
在數(shù)據(jù)庫系統(tǒng)中,有效的數(shù)據(jù)訪問查詢離不開索引結(jié)構(gòu).數(shù)據(jù)庫系統(tǒng)中存在多種索引結(jié)構(gòu)來滿足不同的訪問模式需求[10,14].B樹索引最適用于范圍請求;對于單個關(guān)鍵字的查找,Hash索引的效果最好;布隆過濾器適用于判斷某個記錄是否存在.
索引作為一種存取模式,對數(shù)據(jù)庫系統(tǒng)具有重要作用,能夠加速一個或多個屬性上特定值的查詢[10,40].圖3為傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的索引結(jié)構(gòu)[10,40].索引是一種數(shù)據(jù)結(jié)構(gòu),能夠以一個或多個字段的值作為輸入,并“迅速地”找到其對應的數(shù)據(jù)項——具有該值的記錄.
Fig. 3 The traditional index structure of database圖3 傳統(tǒng)數(shù)據(jù)庫索引結(jié)構(gòu)
索引結(jié)構(gòu)對于數(shù)據(jù)庫系統(tǒng)至關(guān)重要,因此對于索引結(jié)構(gòu)的優(yōu)化一直是數(shù)據(jù)庫領(lǐng)域的研究重點.傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的索引結(jié)構(gòu)是通用型的數(shù)據(jù)結(jié)構(gòu),對底層數(shù)據(jù)的分布不采取任何假設(shè),而現(xiàn)實中很多場景下數(shù)據(jù)的分布具有規(guī)律性,因此可以使用機器學習方法對索引結(jié)構(gòu)進行建模[3].在索引結(jié)構(gòu)中,數(shù)據(jù)表中所有的〈key,position〉對,自然地構(gòu)成了機器學習中的訓練數(shù)據(jù),如果我們可以知道數(shù)據(jù)的準確分布,那么幾乎可以優(yōu)化所有的索引結(jié)構(gòu).Kraska等人[3]為該領(lǐng)域的研究做出開創(chuàng)性工作,機器學習方法通過學習來反映數(shù)據(jù)的模式,因此使用學習到的模型來擬合索引結(jié)構(gòu),提出了學習化的索引結(jié)構(gòu)(learned index structures).
Kraska等人[3]將索引結(jié)構(gòu)視為模型,B樹索引視為查找關(guān)鍵字在有序數(shù)組中的位置;Hash索引模型是在一組無序數(shù)據(jù)中查找關(guān)鍵字的位置;位圖索引模型返回在一組數(shù)據(jù)中是否存在某查找關(guān)鍵字.學習化索引的關(guān)鍵在于訓練一個模型,能夠?qū)W習到關(guān)鍵字的排序位置或結(jié)構(gòu),基于模型來有效地預測數(shù)據(jù)記錄的位置和存在性.
Mitzenmacher在學習化索引[3]的基礎(chǔ)上,針對學習化的布隆過濾器在理論上構(gòu)建了更加形式化的模型[42].在正類實例集合P和負類實例集合N上的學習化布隆過濾器包含:1)帶有閾值τ的函數(shù)f:U→[0,1];2)一個相關(guān)的標準布隆過濾器B,稱之為后備過濾器(backup filter).其中U表示全體可能的查詢關(guān)鍵字集合,理想狀態(tài)下,U=P∪N.后備過濾器用于處理集合{z|f(z)<τ}中的關(guān)鍵字.對于一個查詢y,學習化布隆過濾器返回“真”的條件為:1)f(y)≥τ或2)f(y)<τ但后備過濾器返回y∈K,否則學習化的布隆過濾器返回y?K.該研究工作指出學習化布隆過濾器模型的優(yōu)勢以及該模型不適用的場景.在后續(xù)的研究工作[43]中,為同時減少假正類和假負類,提出采用“夾心布隆過濾器”,即在學習化函數(shù)f的前后分別配有一個傳統(tǒng)的布隆過濾器.
另外內(nèi)存索引的創(chuàng)建或修改是十分耗時的過程,通常情況下,當參數(shù)更改時支持索引的數(shù)據(jù)結(jié)構(gòu)通常需要從頭創(chuàng)建.Darshana等人[44]提出自適應索引(self-adapting index, SAI)的方法,在后臺不斷地進行動態(tài)小規(guī)模增量重組,是一種“即時”索引重組方式,避免在重組索引時,由索引不可用帶來的數(shù)據(jù)庫性能的下降問題.目前也已經(jīng)開始探索將學習化的索引用于倒排索引.Oosterhuis[45]探索將學習化索引結(jié)構(gòu)用于索引壓縮的潛力,以及應用學習化索引來支持基于布爾交叉的搜索;Pavo[46]是基于RNN的倒排索引,利用分層神經(jīng)網(wǎng)絡來模擬Hash函數(shù),該工作還得出一個有趣的結(jié)論:同時構(gòu)建有監(jiān)督和無監(jiān)督的學習策略,實驗結(jié)果證明無監(jiān)督的學習策略更好.在目前大數(shù)據(jù)時代,如何設(shè)計有效靈活的數(shù)據(jù)組織方式改善傳統(tǒng)倒排表的空間利用率一直是需要解決的問題.學習化的模型應用于倒排索引方面具有巨大的潛力,考慮不同的數(shù)據(jù)分布、探索更智能的倒排索引,是未來有前途的研究領(lǐng)域[46].
依據(jù)目前研究機器學習化索引結(jié)構(gòu)的文獻,表1針對學習化的索引與傳統(tǒng)的索引結(jié)構(gòu)進行比較.
Table 1 Comparison Between Learned Index and Traditional Index表1 學習化索引與傳統(tǒng)索引比較及研究工作
學習化索引使用簡單的神經(jīng)網(wǎng)絡來替代數(shù)據(jù)庫系統(tǒng)中傳統(tǒng)的索引結(jié)構(gòu).開始了通過機器學習方法來構(gòu)建學習化模型,并用來替換數(shù)據(jù)庫管理系統(tǒng)核心組件的研究工作.但目前學習化索引結(jié)構(gòu)的研究工作通常假設(shè)數(shù)據(jù)庫系統(tǒng)中底層數(shù)據(jù)分布是靜態(tài)的,即針對只讀型(read-only)數(shù)據(jù)庫系統(tǒng),不支持數(shù)據(jù)的更新.當?shù)讓訑?shù)據(jù)分布發(fā)生變化時,學習化的模型需要重新訓練.隨著硬件資源的不斷發(fā)展、計算能力的不斷提升,未來這一思想將會對數(shù)據(jù)庫系統(tǒng)的設(shè)計產(chǎn)生深遠影響.同時該研究工作也帶來了新的研究問題:1)針對B樹索引結(jié)構(gòu)中頻繁插入、刪除或更新場景下的模型重訓練問題,需要進一步解決;2)針對布隆過濾器在訓練時數(shù)據(jù)庫中不存在負類數(shù)據(jù)的情形,需要進一步探討;3)針對Hash索引模型中使用模型預測的計算開銷相對傳統(tǒng)的Hash索引開銷較大,如何設(shè)計既避免沖突,同時又快速預測的學習化Hash函數(shù),值得進一步研究.
緩沖區(qū)管理,是當出現(xiàn)缺頁中斷時,如果有空閑頁,則直接讀入要訪問的頁面;如果不存在空閑頁,則采用緩沖區(qū)淘汰策略[40],進行頁的換出和換入操作.常用的頁面置換算法有:FIFO,LRU,ClOCK等.
傳統(tǒng)的在線學習算法將決策制定封裝在不確定性下,為應對所有可能的未來事件提供了方法,并保證提供近似最優(yōu)的方案.而在機器學習中,使用從數(shù)據(jù)中發(fā)現(xiàn)的模式預測未來,通常是最小化誤差.因此Lykouris等人[16]提出將在線算法與機器學習預測相結(jié)合的通用框架——提供機器學習建議的在線模型(online with learned advice model, OLAM).采用機器學習模型來增強在線學習的能力,并將該方法用于傳統(tǒng)的緩存問題,為緩沖區(qū)制定淘汰策略,即具有機器學習建議的競爭性緩存.實驗證明,即便是使用簡單的預測器,Lykouris提出的算法相比LRU策略都有所改進.
在緩沖區(qū)管理中,如何結(jié)合頁面的歷史使用情況以及預測到的工作負載,不斷收集新的頁面使用信息,同時反饋頁面置換的性能,預測哪些頁需要換入、哪些頁需要換出,從而進一步減少缺頁中斷,是未來值得研究的問題.
為改進用戶體驗,許多現(xiàn)代數(shù)據(jù)中心的服務都在爭取更大的內(nèi)存容量,這給虛擬內(nèi)存子系統(tǒng)帶來了很大的壓力.大量的內(nèi)存數(shù)據(jù)集是許多服務器應用程序的主要特性之一,包括數(shù)據(jù)庫系統(tǒng)、鍵值存儲和數(shù)據(jù)分析框架.傳統(tǒng)的軟件和硬件虛擬內(nèi)存機制已經(jīng)受到限制,Margaritov等人在機器學習的推動下探索新的方法.受機器學習化索引[3]的啟發(fā),提出學習化的頁表索引(learned page table indexes)[17],是一種基于學習模型的神經(jīng)網(wǎng)絡地址轉(zhuǎn)換機制,同時該論文指出要進一步構(gòu)建神經(jīng)頁表索引器.
在存儲管理方面的研究工作還有學習化的內(nèi)存存取模式[47],提出了基于長短期記憶網(wǎng)絡(long-short term memory, LSTM)的預取模型,將預取問題視為基于序列的預測問題,為計算機體系結(jié)構(gòu)的研究中嵌入機器學習方法開辟了新方向.目前對于計算機硬件體系結(jié)構(gòu)的機器學習化研究還較少.
傳統(tǒng)的數(shù)據(jù)庫領(lǐng)域在查詢優(yōu)化方面已經(jīng)做了很多努力[47-48],查詢優(yōu)化是為計算關(guān)系表達式選擇最有效且代價最小的查詢計劃的過程.
圖4為傳統(tǒng)的查詢優(yōu)化器架構(gòu)[48],首先枚舉所有可能的查詢計劃集合的部分子集,采用啟發(fā)式的規(guī)則進行基數(shù)估計,并輸入到代價模型中,選擇語義上相等但代價最小的執(zhí)行計劃.
Fig. 4 The architecture of traditional query optimizer圖4 傳統(tǒng)查詢優(yōu)化器架構(gòu)
根據(jù)查詢優(yōu)化器架構(gòu)可以將查詢優(yōu)化的機器學習化研究分為3個方面,分別為連接次序枚舉、基數(shù)估計、代價模型.因此本節(jié)從這3個方面闡述機器學習化查詢優(yōu)化的現(xiàn)有研究工作.
在關(guān)系數(shù)據(jù)庫中,連接次序的選擇對于查詢性能具有重要影響[48],并且一直是數(shù)據(jù)庫系統(tǒng)中廣泛研究的問題之一.傳統(tǒng)的查詢優(yōu)化器通常使用靜態(tài)連接次序枚舉算法,這些算法不包含關(guān)于產(chǎn)生的查詢計劃質(zhì)量好與壞的反饋,因此優(yōu)化器通常會重復選擇同樣差的查詢計劃.連接次序選擇的主要挑戰(zhàn)是通過枚舉候選空間找到代價最小的連接次序,因此枚舉器需要在最小化枚舉候選空間的同時,能夠找到代價最小的連接次序.大多數(shù)數(shù)據(jù)庫系統(tǒng),由數(shù)據(jù)庫管理員來控制候選計劃空間的大小[47],例如只在左深連接子樹中選擇,或者在一段時間之后終止枚舉,在枚舉時一般采用動態(tài)規(guī)劃[47]或貪心算法[49].
深度強化學習(deep reinforcement learning, DRL)[50]正在迅速改變著人工智能領(lǐng)域.深度強化學習能夠?qū)δP秃铜h(huán)境有更高層次的理解,使模型能夠?qū)W習更復雜的動態(tài)任務.Ortiz等人[51]探索將DRL用于解決查詢優(yōu)化的問題,通過訓練深度學習模型來預測查詢計劃的基數(shù)估計,主要解決查詢優(yōu)化領(lǐng)域的狀態(tài)表示和狀態(tài)轉(zhuǎn)換函數(shù)的構(gòu)造問題. Ortiz等人訓練模型來學習并逐步生成每一個子查詢中間結(jié)果的簡潔表示,模型以當前子查詢和新的操作符作為輸入,預測產(chǎn)生下一個子查詢的特性,該特性用于計算該子查詢的基數(shù).同時基于學習化的表示(learned representation),使用強化學習改進查詢計劃枚舉,將其視為一個馬爾可夫過程來逐步構(gòu)建查詢計劃.針對傳統(tǒng)查詢優(yōu)化器不能從先前經(jīng)驗中學習這一問題,Marcus等人[12]認為深度強化學習可用于改善此問題,基于人工神經(jīng)網(wǎng)絡的深度強化學習能夠整合反饋來自動改進查詢優(yōu)化器的決策.文獻[12]將深度強化學習用于連接次序枚舉,提出ReJOIN. ReJOIN只考慮連接次序問題,不執(zhí)行索引選擇、連接操作符選擇,這些都交給DBMS傳統(tǒng)優(yōu)化器的其他部分去執(zhí)行,因此ReJOIN不是端到端的查詢優(yōu)化器.ReJOIN將連接次序枚舉視為一個強化學習過程,通過神經(jīng)網(wǎng)絡來不斷地從反饋中學習,在ReJOIN中使用基于傳統(tǒng)優(yōu)化器的代價模型作為強化學習中的獎勵信號(reward signal).
Marcus等人[52]在ReJOIN的基礎(chǔ)上,提出免調(diào)節(jié)(hand-free)的查詢優(yōu)化器,基于深度學習的方法,實現(xiàn)端到端的查詢優(yōu)化器.包含3種可行的深度學習查詢優(yōu)化框架:1)示范學習[53],訓練模型來模仿傳統(tǒng)的已經(jīng)調(diào)節(jié)好的查詢優(yōu)化器;2)引導式代價模型,初始使用傳統(tǒng)代價模型作為獎勵信號,并記錄查詢的執(zhí)行時間,當模型收斂后使用查詢時間作為獎勵信號;3)漸進式學習[54-55],將查詢優(yōu)化任務分解為較小的多個任務,通過劃分任務使得搜索空間變得可管理.由此看來Marcus等人提出的方法并非真正的“免調(diào)節(jié)”,示范學習、引導式代價模型、漸進式學習在一定程度上都依賴于已經(jīng)調(diào)節(jié)好的查詢優(yōu)化器或代價模型.類似的研究工作還有Krishnan等人[56]基于深度強化學習提出的查詢優(yōu)化器DQ.
基數(shù)估計一般基于對數(shù)據(jù)的均勻性、一致性、獨立性等假設(shè),實際的數(shù)據(jù)集中這些假設(shè)大多不能成立.在大數(shù)據(jù)系統(tǒng)中,基數(shù)估計對于云共享基礎(chǔ)設(shè)施極為重要,例如谷歌的BigQuery、亞馬遜的Athena、微軟的Azure Data Lake等[57].云共享系統(tǒng)中,基數(shù)估計的不正確性不僅導致優(yōu)化性能差,還決定現(xiàn)代共享云基礎(chǔ)設(shè)施中所消耗的資源.基于機器學習的CARDLEARNER[57]比默認的基數(shù)估計器可精確高達5個數(shù)量級.CARDLEARNER從先前的作業(yè)執(zhí)行中學習基數(shù)估計模型,并使用模型來預測未來作業(yè)的基數(shù).該研究工作已經(jīng)集成到SCOPE查詢優(yōu)化器中.針對傳統(tǒng)數(shù)據(jù)庫的基數(shù)估計問題,Kiefer等人采用傳統(tǒng)的機器學習方法,構(gòu)建基于核密度估計(kernel density estimation, KDE)的基數(shù)估計模型[58-59],實現(xiàn)比現(xiàn)有方法更好的性能.Kipf等人[6]還提出學習化基數(shù)(learned cardinalities)的概念.采用神經(jīng)網(wǎng)絡,將基數(shù)估計視為一個有監(jiān)督的問題,將用戶查詢和該查詢的基數(shù)進行特征化作為模型輸入,模型輸出為基數(shù)的估計值.QuickSel[60]針對基于代價模型的查詢優(yōu)化器中估計查詢的選擇性問題,提出了選擇學習框架(selectivity learning framework).以上研究工作大多只考慮查詢優(yōu)化器的基數(shù)估計部分,其他任務留給傳統(tǒng)的優(yōu)化器執(zhí)行.目前基于機器學習的基數(shù)估計研究,已經(jīng)對數(shù)據(jù)庫的性能產(chǎn)生良好的影響,同時提供了新思路,未來值得探究更加合適的基于機器學習的新方法,具有較大的研究空間.
在數(shù)據(jù)庫系統(tǒng)性能調(diào)優(yōu)過程,特別是查詢優(yōu)化過程中,代價預測模型對于優(yōu)化效果極為重要. 現(xiàn)有的研究大多依賴于對數(shù)據(jù)的簡單假設(shè),利用系統(tǒng)的統(tǒng)計信息,并沒有真正預測查詢的執(zhí)行時間.
Ganapathi等人[61]提出使用機器學習來精確預測數(shù)據(jù)庫查詢的性能指標.在一組查詢的訓練集上發(fā)現(xiàn)查詢屬性和查詢性能指標之間的多元關(guān)聯(lián),并使用這些關(guān)聯(lián)的統(tǒng)計關(guān)系來預測新查詢的性能.該方法丟失了查詢計劃的結(jié)構(gòu)信息.畢里緣等人[62]針對查詢優(yōu)化器的查詢開銷預測問題,使用LSTM來預測查詢開銷,首先采用后序編碼將查詢語法樹轉(zhuǎn)換為一個長度為5的操作序列,將其輸入到LSTM網(wǎng)絡中,進行查詢開銷預測. 該方法以查詢計劃中的操作行為和實際運行的時間作為神經(jīng)網(wǎng)絡提取特征的來源.該模型最后輸出該查詢計劃的預測開銷序列,并且在實際執(zhí)行查詢計劃前,能夠產(chǎn)生對該計劃實際運行時間的預測.
表2為針對現(xiàn)有機器學習化的查詢優(yōu)化研究工作的總結(jié),主要針對查詢優(yōu)化器中的3個部分:連接次序枚舉、基數(shù)估計、代價模型,同時也有一些工作是針對整體查詢優(yōu)化器進行優(yōu)化.
機器學習化的查詢優(yōu)化器,基于深度強化學習,能夠從先前的錯誤中學習,自動改進查詢優(yōu)化器的決策,對數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化研究具有開創(chuàng)性的進步.在針對查詢優(yōu)化中代價預測的問題,以查詢計劃中的執(zhí)行時間為代價預測標準,值得進一步探討,后續(xù)依然有很多工作值得做.
Table 2 Query Optimization with Machine Learning表2 機器學習化查詢優(yōu)化器
未來機器學習化的查詢優(yōu)化對于數(shù)據(jù)庫系統(tǒng)的設(shè)計、性能提升都會產(chǎn)生深遠影響.同時該研究工作也帶來新的挑戰(zhàn):1)深度強化學習需要大量的訓練數(shù)據(jù),在訓練初期數(shù)據(jù)庫查詢優(yōu)化的性能很差;2)深度強化學習通常假設(shè)獎勵信號很容易獲得,而查詢優(yōu)化最本質(zhì)的性能指標是查詢延時,實際中計算代價太大;3)傳統(tǒng)的代價模型是建立在不實際的數(shù)據(jù)集特性假設(shè)之上的,不能夠真正反映查詢優(yōu)化的性能.以查詢計劃中的操作行為和實際運行的時間作為特征的來源,并以此來預測查詢代價,構(gòu)建以此為代價模型的學習化查詢優(yōu)化器值得進一步探討.因此針對數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化,結(jié)合深度強化學習等其他機器學習方法仍然有很多值得研究的工作.
在數(shù)據(jù)庫領(lǐng)域,參數(shù)的調(diào)優(yōu)是長久以來的研究問題,同時也是難題[18-19].參數(shù)配置主要面臨著3個難題:1)參數(shù)名稱不標準,不同的數(shù)據(jù)庫系統(tǒng)在同一個參數(shù)上可能具有不同的名稱;2)參數(shù)功能不獨立,改變一個參數(shù)會影響其他參數(shù)的配置性能;3)參數(shù)調(diào)優(yōu)適用范圍不具通用性,在一個應用上優(yōu)化好的參數(shù),在另一個系統(tǒng)上一般不適用[7].
優(yōu)化DBMS的參數(shù)對系統(tǒng)性能至關(guān)重要.DBMS的默認配置通常差強人意,隨著數(shù)據(jù)庫系統(tǒng)的發(fā)展,現(xiàn)代DBMS擁有大量參數(shù)[63-65].數(shù)據(jù)庫系統(tǒng)和應用程序的規(guī)模不斷增大,復雜性不斷上升,良好的DBMS配置很多時候依賴于DBA所無法知道和預料的因素,優(yōu)化DBMS的參數(shù)已經(jīng)超過人類能力[7].
實現(xiàn)數(shù)據(jù)庫系統(tǒng)的自動化管理是一個長期的研究過程.數(shù)據(jù)庫系統(tǒng)借鑒自動化、機器學習等方法來實現(xiàn)參數(shù)配置,已有很多探索.表3為自動化數(shù)據(jù)庫管理系統(tǒng)研究的3個階段及其主要特征,主要依據(jù)為這3個階段的研究工作以及文獻[66]的總結(jié).
依據(jù)自動化數(shù)據(jù)庫系統(tǒng)研究的側(cè)重點不同,可以分為3個階段:自適應數(shù)據(jù)庫系統(tǒng),自調(diào)節(jié)數(shù)據(jù)庫系統(tǒng),以及云計算出現(xiàn)后的自主數(shù)據(jù)庫系統(tǒng)[66].
本節(jié)介紹自動化數(shù)據(jù)庫管理系統(tǒng)(automatic database management system)近50年來的研究歷程.主要從云計算出現(xiàn)前后介紹自動化數(shù)據(jù)庫管理系統(tǒng)的研究.云計算出現(xiàn)后,由于云平臺的大規(guī)模和復雜性,使得數(shù)據(jù)庫系統(tǒng)的自動化研究更加迫切.
Table 3 The Development History on Automatic Database Management System表3 自動化數(shù)據(jù)庫管理系統(tǒng)研究歷程
1970~1999期間,自適應數(shù)據(jù)庫(self-adaptive database)系統(tǒng)主要集中于數(shù)據(jù)庫系統(tǒng)的物理設(shè)計[66],尤其在索引選擇[67-68]、數(shù)據(jù)分割[69-70]方面.這些早期的工作奠定了現(xiàn)代數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)工作的基礎(chǔ):1)系統(tǒng)收集關(guān)于應用程序如何訪問數(shù)據(jù)的評價指標;2)根據(jù)代價模型搜索需要進行哪些更改來提高系統(tǒng)性能. Hammer等人提出在自適應數(shù)據(jù)庫系統(tǒng)中進行自動化索引選擇[67].數(shù)據(jù)庫自動化分區(qū)和數(shù)據(jù)放置的需求在20世紀90年代更加突出,出現(xiàn)分布式和并行數(shù)據(jù)庫,代表性研究工作有文獻[71],提出根據(jù)數(shù)據(jù)模式和工作負載特性生成最優(yōu)分區(qū)策略的集成數(shù)據(jù)放置算法.
針對自調(diào)節(jié)數(shù)據(jù)庫(self-tuning database)系統(tǒng)的研究集中在1990~2009年,是自動化數(shù)據(jù)庫研究的第2個浪潮.Self-Tuning數(shù)據(jù)庫系統(tǒng)[72],構(gòu)建用于幫助數(shù)據(jù)庫管理員的咨詢工具,針對不同的工作負載,選擇最優(yōu)的索引、物化視圖、分區(qū)模式.代表性的系統(tǒng)有微軟的AutoAdmin[73]、IBM的DB2 Designer[74]等.
21世紀初同時也開始了針對自動化配置參數(shù)調(diào)優(yōu)的研究.幾乎所有的數(shù)據(jù)庫供應商都擁有自己的參數(shù)調(diào)優(yōu)工具[46,75].這些都依賴于數(shù)據(jù)庫管理員來決定這些優(yōu)化是否正確并且何時部署這些配置.代表性的研究工作有IBM為DB2構(gòu)建自動化組件(autonomic components),例如LEO[76],SASH[77]等.
在自動化調(diào)優(yōu)DBMS參數(shù)方面已有較多研究工作.Narayanan等人[78]提出資源顧問(resource advisor),該方法針對于SQL Server,基于細粒度、低開銷的數(shù)據(jù)庫性能追蹤,能夠自動回答資源的“假設(shè)”(what-if)問題,同時準確地預測聯(lián)機事務處理(online transaction processing, OLTP)工作負載性能的變化,能夠更好地理解系統(tǒng)性能. Dias等人[63]提供一種執(zhí)行自動化性能診斷和調(diào)優(yōu)的方法,設(shè)計了自動數(shù)據(jù)庫監(jiān)視器(automatic database diagnostic monitor, ADDM),來自動診斷影響數(shù)據(jù)庫總吞吐量的瓶頸,提供可操作的建議來緩解瓶頸,并應用于Oracle 10g[79]中.Sullivan等人[80]使用被稱為影響圖(influence diagram)的概率推理模型來實現(xiàn)有效的自動化軟件調(diào)優(yōu)方法.Tran等人[81]提出一種基于緩沖區(qū)丟失方程的緩沖區(qū)優(yōu)化方法,將可用數(shù)據(jù)與丟失方程擬合進行優(yōu)化計算. Duan等人[82]提出自動化推薦數(shù)據(jù)庫配置參數(shù)的工具iTuned,結(jié)合自適應采樣技術(shù)使用有計劃的實驗來發(fā)現(xiàn)影響較大和性能高的參數(shù)進行設(shè)置.
以上這些自動化參數(shù)調(diào)優(yōu)工具大都存在缺陷,導致其不能夠適用于一般用途的數(shù)據(jù)庫系統(tǒng)應用程序.大多是由數(shù)據(jù)庫供應商提供,只針對特定的數(shù)據(jù)庫系統(tǒng),少部分工具適用于多個數(shù)據(jù)庫系統(tǒng)但依然需要人工手動配置的步驟.例如需要映射配置參數(shù)之間的關(guān)系[80]、需要引導訓練的過程[81]、需要部署數(shù)據(jù)庫的第2個副本[82]等.并且這些工具都獨立地檢查每個DBMS的部署,不能從先前的參數(shù)調(diào)優(yōu)工作中獲取經(jīng)驗,因此每次參數(shù)配置工作都耗費大量的時間和資源.
2010~2019年的早期,伴隨著云計算的出現(xiàn),由于云平臺的大規(guī)模和復雜性[83],針對數(shù)據(jù)庫系統(tǒng)的自動化研究更加迫切.在此期間,云服務提供商開發(fā)自定義工具來部署數(shù)據(jù)庫系統(tǒng).例如,微軟的Azure服務模型利用DBMS容器的資源從而自動調(diào)整資源的分配[84],以滿足服務質(zhì)量和資源預算約束.
卡耐基梅隆大學的Pavlo教授指出,現(xiàn)在是自主數(shù)據(jù)庫(self-driving database)的時代,并指出一個真正的自主數(shù)據(jù)庫管理系統(tǒng)[66]應當具備3方面能力:1)自主地決定采用何種動作來對系統(tǒng)進行優(yōu)化;2)自主決定何時部署優(yōu)化動作;3)自主地從優(yōu)化動作與性能改善中學習.所有的能力應該都不需要DBA的交互,自主數(shù)據(jù)庫可稱為自動化數(shù)據(jù)庫系統(tǒng)發(fā)展的第3個階段.
自適應和自調(diào)節(jié)數(shù)據(jù)庫系統(tǒng)的研究工作不能稱之為完整的自動化數(shù)據(jù)庫管理系統(tǒng)[21],原因有3方面:1)先前的自動化工具都是作為數(shù)據(jù)庫系統(tǒng)的外部組件使用;2)這些組件在數(shù)據(jù)庫系統(tǒng)發(fā)生問題時給予DBA調(diào)優(yōu)建議,最終需要DBA來決定是否采納建議,并決定何時部署調(diào)優(yōu)動作;3)這些工具在調(diào)節(jié)時,對數(shù)據(jù)庫系統(tǒng)的各個方面沒有整體的考慮,往往僅考慮數(shù)據(jù)庫系統(tǒng)性能的某一方面.即便是這些系統(tǒng)工具是自動化的,可以自行部署優(yōu)化,現(xiàn)有的DBMS體系結(jié)構(gòu)也不能支持重大的更改,如果不進一步改進系統(tǒng),這些自動化的工具也無法適應未來的瓶頸.
Peloton是第1個自主數(shù)據(jù)庫管理系統(tǒng)[20-21],該系統(tǒng)集成了關(guān)于工作負載預測和數(shù)據(jù)庫配置動作部署的深度學習框架.并指出self-driving database能夠支持的3類優(yōu)化:1)數(shù)據(jù)庫的物理設(shè)計(索引、物化視圖、存儲布局等);2)數(shù)據(jù)組織的改變(位置、數(shù)據(jù)分割等);3)影響數(shù)據(jù)庫系統(tǒng)執(zhí)行時間的配置(資源、配置調(diào)優(yōu)、查詢優(yōu)化). Peloton作為第1個自動化的內(nèi)存數(shù)據(jù)庫系統(tǒng),能夠逐步地對數(shù)據(jù)庫系統(tǒng)進行優(yōu)化,在部署期間不會對應用程序造成明顯的影響.Ma等人在文獻[85]中,針對 “self-driving” DBMS——Peloton的工作負載預測框架進行了詳細闡述,稱之為QueryBot5000.
Aken等人[7]提出OtterTune,采用自動化的方法來調(diào)節(jié)數(shù)據(jù)庫系統(tǒng)的配置.結(jié)合了有監(jiān)督和無監(jiān)督的機器學習方法,利用過去的經(jīng)驗,首先識別主要具有影響力的配置參數(shù)(knobs),為借鑒先前工作負載調(diào)優(yōu)的經(jīng)驗,OtterTune將未知的或?qū)⒁幚淼墓ぷ髫撦d與已有的工作負載相匹配,基于保存的調(diào)優(yōu)經(jīng)驗數(shù)據(jù),為提高DBMS的某一特定目標(例如latency, throughput等),推薦優(yōu)化的DBMS 參數(shù).OtterTune假設(shè)擁有數(shù)據(jù)庫系統(tǒng)的各種權(quán)限,包括重啟數(shù)據(jù)庫系統(tǒng).
針對云托管的多租戶數(shù)據(jù)庫服務(cloud-hosted multi-tenant database services),Jain等人提出與數(shù)據(jù)庫系統(tǒng)無關(guān)的工作負載管理和分析服務架構(gòu)Querc[86]. Querc通過挖掘和管理大規(guī)模、異構(gòu)的工作負載,將工作負載管理和分析視為一組查詢標記任務的模型,因此需要大量的訓練數(shù)據(jù)才能有效.隨著工作負載復雜性增加、負載規(guī)模增大、負載管理需求多樣化,云托管的數(shù)據(jù)庫服務十分需要自動化的方法來對用戶行為模式、工作負載進行分析,從而進行資源配置、路由查詢等.因此該領(lǐng)域具有理論和實際的研究價值.
SageDB[87]指出現(xiàn)在的數(shù)據(jù)庫系統(tǒng)大多是為處理不同的數(shù)據(jù)模式、數(shù)據(jù)類型、數(shù)據(jù)分布等而設(shè)計的通用型系統(tǒng).這類系統(tǒng)沒有利用特定應用場景和特定數(shù)據(jù)分布特征的優(yōu)勢.事實上,如果能夠知道數(shù)據(jù)的特定分布,那么幾乎可以優(yōu)化所有系統(tǒng)[3].因此Kraska提出一種新數(shù)據(jù)庫系統(tǒng)——SageDB,旨在通過代碼合成與機器學習的優(yōu)越性設(shè)計并優(yōu)化特定應用場景下的數(shù)據(jù)庫系統(tǒng).主要使用機器學習對數(shù)據(jù)分布、工作負載、硬件等進行建模,確定特定數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、最佳存取路徑及查詢計劃等優(yōu)化目標.同時指出,學習化的組件能夠完全替代數(shù)據(jù)庫系統(tǒng)的核心部分.
表4對自主數(shù)據(jù)庫系統(tǒng)的部分研究工作進行簡要比較和總結(jié),包括Peloton[20-21],OtterTune[7],Querc[86],SageDB[87],主要從這些研究工作所采用的機器學習方法、涉及的數(shù)據(jù)庫系統(tǒng)組件或功能及這些研究工作的特點出發(fā)進行總結(jié).
Table 4 Research Work on Self-Driving Database Management Systems表4 自主數(shù)據(jù)庫管理系統(tǒng)研究工作總結(jié)
在自動化數(shù)據(jù)庫領(lǐng)域的研究工作還包括:Deep Tune DB[88],主要探索強化學習在數(shù)據(jù)庫物理設(shè)計中的應用;DASlab實驗室開發(fā)的自動設(shè)計數(shù)據(jù)庫系統(tǒng)(self-designing data systems)[89-91],快速生成給定應用程序的最優(yōu)解決方案,self-designing data systems將減輕系統(tǒng)設(shè)計人員和最終用戶在數(shù)據(jù)管理方面的煩惱,最終提高生產(chǎn)率;Stratos等人提出了自動化數(shù)據(jù)結(jié)構(gòu)設(shè)計的概念[92];DBSeer[93]記錄表示數(shù)據(jù)庫系統(tǒng)性能的時間序列數(shù)據(jù),并進行比較來幫助數(shù)據(jù)庫管理員診斷系統(tǒng)中運行緩慢的區(qū)域和正常運行的區(qū)域.Kossmann指出未來的自動化數(shù)據(jù)庫系統(tǒng)將利用基于工作負載驅(qū)動的優(yōu)化和機器學習技術(shù)來生成對未來工作負載的預測,并決定如何選擇操作來最優(yōu)地處理工作負載,同時能夠從過去的經(jīng)驗中學習[94].
工業(yè)界在自動化數(shù)據(jù)庫系統(tǒng)方面也在不斷地探索.Oracle在2017年9月發(fā)布了Oracle自治數(shù)據(jù)庫[95-97],基于云環(huán)境的自治數(shù)據(jù)庫,利用機器學習來實現(xiàn)自動化,能夠自動地執(zhí)行查詢優(yōu)化和參數(shù)調(diào)優(yōu)等.但針對如何預測未來工作負載,并基于預測對數(shù)據(jù)庫系統(tǒng)進行調(diào)優(yōu),Oracle沒有給出方案[66].華為在2019年5月發(fā)布AI-Native數(shù)據(jù)庫GaussDB[98-99],在數(shù)據(jù)庫系統(tǒng)中引入人工智能技術(shù).將AI嵌入到數(shù)據(jù)庫系統(tǒng)的生命周期,實現(xiàn)數(shù)據(jù)庫系統(tǒng)的自運維、自管理、自調(diào)優(yōu)和故障自診斷.GaussDB的另一大性能優(yōu)勢是支持異構(gòu)計算.
同時,Pavlo[66]認為 “是否能夠擁有一個完全自動化的DBMS——能夠在所有可能的工作負載中達到與人工維護的DBMS相同或更好的性能?答案是肯定的,但短時間內(nèi)還肯定不會.”
因此自動化數(shù)據(jù)庫系統(tǒng)依然有很多值得研究的機遇和挑戰(zhàn),任重而道遠,十分具有研究前景.
如前所述,機器學習化數(shù)據(jù)庫系統(tǒng)泛指結(jié)合機器學習的方法、模型來替換數(shù)據(jù)庫系統(tǒng)的內(nèi)部組件,采用機器學習的方法來幫助數(shù)據(jù)庫系統(tǒng)實現(xiàn)性能優(yōu)化,并提高數(shù)據(jù)庫系統(tǒng)的易用性,實現(xiàn)數(shù)據(jù)庫系統(tǒng)的動態(tài)、智能配置.因此未來的機器學習化數(shù)據(jù)庫系統(tǒng)不單單是對系統(tǒng)內(nèi)部組件的替換,在數(shù)據(jù)庫系統(tǒng)機器學習化的發(fā)展中,將會更多使數(shù)據(jù)庫系統(tǒng)向著更加自動化、智能化的方向發(fā)展.
據(jù)此提出自動化數(shù)據(jù)庫管理系統(tǒng)(autonomous database management system)框架,如圖5所示.不僅包含機器學習化數(shù)據(jù)庫系統(tǒng),同時包含采用機器學習的方法對數(shù)據(jù)庫系統(tǒng)進行智能管理.
首先在數(shù)據(jù)庫系統(tǒng)內(nèi)部將會存在各種學習化的模型來替換傳統(tǒng)數(shù)據(jù)庫系統(tǒng)組件,例如機器學習化的查詢優(yōu)化器、索引結(jié)構(gòu)等.針對機器學習化的數(shù)據(jù)庫系統(tǒng),必須有統(tǒng)一的模型管理器(unified model manager),負責模型的更新、維護等工作.其次作為自動化數(shù)據(jù)庫管理系統(tǒng),工作負載預測模型(workload prediction model)要具備對未來工作負載預測的能力,從而對數(shù)據(jù)庫系統(tǒng)進行動態(tài)地配置調(diào)優(yōu).對數(shù)據(jù)庫系統(tǒng)工作負載預測能力的評估需要采集數(shù)據(jù)庫系統(tǒng)的性能,因此性能監(jiān)控器(performance monitor)用來監(jiān)控數(shù)據(jù)庫系統(tǒng)的性能,并將性能數(shù)據(jù)傳遞給工作負載預測模型作為訓練數(shù)據(jù).
Pavlo[66]指出,將來的“self-driving” DBMS,同樣需要人類能夠部署一些優(yōu)化,就像數(shù)據(jù)庫系統(tǒng)的助理一樣.因此我們認為在自動化數(shù)據(jù)庫管理系統(tǒng)中,依然需要部署針對特定應用領(lǐng)域的啟發(fā)式規(guī)則和約束條件.
Fig. 5 The architecture of autonomous database management system圖5 自動化數(shù)據(jù)庫管理系統(tǒng)框架
在數(shù)據(jù)庫系統(tǒng)中結(jié)合機器學習等新技術(shù),我們認為以下7個方面是機器學習化數(shù)據(jù)庫系統(tǒng)未來的主要研究問題與挑戰(zhàn):
1) 機器學習化數(shù)據(jù)庫系統(tǒng)的模型管理問題.從當前的研究工作可以看出,大多是針對數(shù)據(jù)庫系統(tǒng)的某一方面,采用機器學習化的模型來替換數(shù)據(jù)庫系統(tǒng)的內(nèi)部組件或采用機器學習化的模型來輔助數(shù)據(jù)庫系統(tǒng)工作.而面對龐大的數(shù)據(jù)庫管理系統(tǒng),如果每一組件都附著一個機器學習模型,對數(shù)據(jù)庫系統(tǒng)的訪問將變成對模型的訪問,而不需要訪問底層數(shù)據(jù).那么數(shù)據(jù)庫管理系統(tǒng)將變成“模型庫管理系統(tǒng)”(model base management system, MBMS).模型的統(tǒng)一管理中,模型的訓練、更新、維護等是否會增加數(shù)據(jù)庫系統(tǒng)的能耗?另一方面,深度學習模型具有眾多參數(shù)需要調(diào)節(jié),是否會增加數(shù)據(jù)庫系統(tǒng)需要配置的參數(shù)量,從而帶來系統(tǒng)配置的“參數(shù)爆炸”問題.模型之間的通信、模型之間如何配合、模型的參數(shù)配置以及模型的更新維護等都是亟待解決的問題.
2) 系統(tǒng)化的機器學習化數(shù)據(jù)庫系統(tǒng)研究.現(xiàn)有的數(shù)據(jù)庫系統(tǒng)機器學習化研究主要集中在替換數(shù)據(jù)庫系統(tǒng)中的單個組件,這些附著到數(shù)據(jù)庫系統(tǒng)的每一個模型都需要考慮其模型構(gòu)建、重新訓練等問題.對于龐大的數(shù)據(jù)庫系統(tǒng),如果每一個組件都帶有一個機器學習化模型,勢必會增加系統(tǒng)的負擔.數(shù)據(jù)庫系統(tǒng)組件之間不是單純的線性疊加,因此學習化后的組件與其他組件之間非線性的影響關(guān)系需要考慮.因此,我們提出要以系統(tǒng)的觀念來構(gòu)建機器學習化的數(shù)據(jù)庫系統(tǒng). 從系統(tǒng)的角度考慮機器學習技術(shù)與數(shù)據(jù)庫系統(tǒng)的結(jié)合,構(gòu)建整體的機器學習化數(shù)據(jù)庫系統(tǒng).
3) 機器學習化數(shù)據(jù)庫系統(tǒng)的性能瓶頸.現(xiàn)有數(shù)據(jù)庫系統(tǒng)的性能瓶頸集中在CPU上,那么當數(shù)據(jù)庫系統(tǒng)被機器學習化后,性能瓶頸是否會發(fā)生變化?答案是肯定的.針對學習化的索引,相對傳統(tǒng)的索引結(jié)構(gòu)性能提升3倍[2],假設(shè)所有的性能提升都來自CPU,那么學習化后的數(shù)據(jù)庫系統(tǒng)執(zhí)行查詢所占用的時間比為:CPU占42%,硬盤占34%,內(nèi)存占24%.由此可見機器學習化的數(shù)據(jù)庫系統(tǒng),如果要繼續(xù)優(yōu)化,瓶頸不單單是CPU,硬盤和內(nèi)存也會成為瓶頸.只有了解機器學習化數(shù)據(jù)庫系統(tǒng)的性能瓶頸,才能夠進一步對系統(tǒng)實施優(yōu)化.未來數(shù)據(jù)庫系統(tǒng)除了從算法、模型層面改進,新硬件是不能忽略的重要因素.
4) 基于新硬件的機器學習化數(shù)據(jù)庫系統(tǒng).機器學習化的數(shù)據(jù)庫系統(tǒng),面臨著從數(shù)據(jù)密集型到計算密集型的轉(zhuǎn)變.隨著在數(shù)據(jù)庫系統(tǒng)中引入機器學習技術(shù)的不斷深入,未來機器學習化數(shù)據(jù)庫系統(tǒng)的部署環(huán)境必定需要有配套的新硬件環(huán)境來支持.同時將現(xiàn)有的數(shù)據(jù)庫系統(tǒng)算法遷移到現(xiàn)代加速器中,需要對系統(tǒng)算法進行重構(gòu)和改寫.如何有效利用硬件資源對數(shù)據(jù)庫系統(tǒng)提出了新的挑戰(zhàn),利用新的硬件特性及技術(shù)對大數(shù)據(jù)進行高效管理具有重要意義.伴隨著計算機硬件及人工智能芯片[39-40]的發(fā)展,單純在軟件層面引入機器學習所帶來的性能提升,與同時在系統(tǒng)底層引入智能處理器、機器學習加速設(shè)備等新硬件帶來的性能提升,必然有差別,但該方向上的研究也面臨著更大挑戰(zhàn).
5) 特定應用領(lǐng)域的機器學習化數(shù)據(jù)庫系統(tǒng).目前的機器學習化數(shù)據(jù)庫系統(tǒng)的研究工作主要集中在利用機器學習等方法對底層數(shù)據(jù)進行建模.設(shè)計通用型系統(tǒng),需要處理不同的數(shù)據(jù)模式、數(shù)據(jù)類型、數(shù)據(jù)分布等通用目標,不具有靈活性.面向特定應用領(lǐng)域,利用特定應用場景和該應用領(lǐng)域所獨有的數(shù)據(jù)特征、數(shù)據(jù)分布等優(yōu)勢,能夠訓練出更好的模型.因此設(shè)計面向特定應用領(lǐng)域的機器學習化數(shù)據(jù)庫系統(tǒng)更具有發(fā)展前景.并且機器學習化數(shù)據(jù)庫系統(tǒng)在只讀型數(shù)據(jù)庫系統(tǒng)中有較好的應用,面對更新頻繁的數(shù)據(jù)庫,底層數(shù)據(jù)變化、模型失效、更新模型的代價以及模型的維護都是有待考慮的問題.因此更新頻繁的數(shù)據(jù)庫應用領(lǐng)域的機器學習化研究面臨著更大的挑戰(zhàn).
6) 云數(shù)據(jù)庫系統(tǒng)的機器學習化研究.隨著數(shù)據(jù)庫系統(tǒng)更多地部署在云服務器中,工作負載的規(guī)模不斷增大,工作負載的類型也不斷豐富,異構(gòu)性突出.工作負載快速變化,對數(shù)據(jù)庫系統(tǒng)的性能提出更高的要求.工作負載的快速變化及其多樣性,要求數(shù)據(jù)庫系統(tǒng)針對工作負載的變化能夠智能且動態(tài)地適配數(shù)據(jù)庫系統(tǒng)的配置,從而保持數(shù)據(jù)庫系統(tǒng)的最佳運行時狀態(tài).云環(huán)境下數(shù)據(jù)庫系統(tǒng)的工作負載異構(gòu)性更加突出[88].云環(huán)境下部署的數(shù)據(jù)庫系統(tǒng),帶來了數(shù)據(jù)庫系統(tǒng)研究工作中很多不需要考慮的執(zhí)行環(huán)境,在云環(huán)境下計算和存儲資源可以視為是“無限的”,理論上DBMS可以立即執(zhí)行對資源的配置,進行靈活地縮減或擴張.為機器學習的應用提供了更廣闊空間,推動云環(huán)境下數(shù)據(jù)庫管理系統(tǒng)的動態(tài)配置,值得進一步研究.
7) 新興數(shù)據(jù)庫系統(tǒng)的機器學習化研究.大數(shù)據(jù)時代的發(fā)展,數(shù)據(jù)產(chǎn)生方式千變?nèi)f化,數(shù)據(jù)之間存在錯綜復雜的關(guān)系[100].當前數(shù)據(jù)時代呈現(xiàn)大規(guī)模數(shù)據(jù)關(guān)聯(lián)、交叉、融合的局面,數(shù)據(jù)的形態(tài)也產(chǎn)生巨大變化,因此數(shù)據(jù)的存儲、管理、查詢也隨之而變,并超越傳統(tǒng)數(shù)據(jù)庫模式.例如云環(huán)境下的分布式數(shù)據(jù)庫管理系統(tǒng)、非關(guān)系型數(shù)據(jù)庫系統(tǒng)、XML數(shù)據(jù)庫系統(tǒng)、XMLRDBMS混合的數(shù)據(jù)庫系統(tǒng)、內(nèi)存閃存數(shù)據(jù)庫系統(tǒng)等新興的數(shù)據(jù)庫管理系統(tǒng).推動新興數(shù)據(jù)庫管理系統(tǒng)與機器學習技術(shù)的結(jié)合同樣具有理論和實踐的研究價值,該領(lǐng)域具備廣闊的發(fā)展空間.
數(shù)據(jù)庫領(lǐng)域經(jīng)過幾十年的研究,已經(jīng)有了很多成熟的優(yōu)化系統(tǒng)性能的技術(shù),機器學習的發(fā)展也有目共睹.機器學習與數(shù)據(jù)庫系統(tǒng)這2個領(lǐng)域,都致力于數(shù)據(jù)驅(qū)動的應用程序,有很多可以共享的通用技術(shù).無論數(shù)據(jù)庫系統(tǒng)化的機器學習研究,還是機器學習化的數(shù)據(jù)庫系統(tǒng)研究,作為2個領(lǐng)域進一步結(jié)合的研究方向,具有發(fā)展?jié)摿?現(xiàn)在是軟件2.0(Software 2.0) 的時代[101-102],即基于數(shù)據(jù)與新硬件的機器學習模型,將機器學習模型視為新一代軟件系統(tǒng):Software 2.0=Model+Data+Hardware.機器學習化的數(shù)據(jù)庫系統(tǒng)迎合了Software 2.0時代的發(fā)展.
近來機器學習化數(shù)據(jù)庫系統(tǒng)的提出和研究,有望突破數(shù)據(jù)庫系統(tǒng)發(fā)展的瓶頸,未來值得我們進一步探討在數(shù)據(jù)庫系統(tǒng)中引入機器學習的相關(guān)技術(shù).