前沿观察 | SageDB:一个自学成才的数据库
版權(quán)聲明:本文由騰訊云數(shù)據(jù)庫產(chǎn)品團隊整理,頁面原始內(nèi)容來自于db weekly英文官網(wǎng),若轉(zhuǎn)載請注明出處。翻譯目的在于傳遞更多全球最新數(shù)據(jù)庫領(lǐng)域相關(guān)信息,并不意味著騰訊云數(shù)據(jù)庫產(chǎn)品團隊贊同其觀點或證實其內(nèi)容的真實性。如果其他媒體、網(wǎng)站或其他任何形式的法律實體和個人使用,必須經(jīng)過著作權(quán)人合法書面授權(quán)并自負全部法律責任。不得擅自使用騰訊云數(shù)據(jù)庫團隊的名義進行轉(zhuǎn)載,或盜用騰訊云數(shù)據(jù)庫團隊名義發(fā)布信息。
SageDB背后的核心思想是構(gòu)建一個或多個關(guān)于數(shù)據(jù)和工作負載分布的模型,并基于這些模型自動為數(shù)據(jù)庫系統(tǒng)的所有組件構(gòu)建最佳數(shù)據(jù)結(jié)構(gòu)和算法。我們稱這種方法為“自適應(yīng)數(shù)據(jù)庫”(原文database synthesis),它將使我們能夠通過專門配置的數(shù)據(jù)庫組件用于特定數(shù)據(jù)庫、查詢工作負載、執(zhí)行環(huán)境等來實現(xiàn)前所未有的性能。
在缺乏在線學(xué)習和自適應(yīng)的情況下,數(shù)據(jù)庫系統(tǒng)設(shè)計被用于通用目的,沒有充分利用工作負載和手頭數(shù)據(jù)的特定特征。SageDB則是通過學(xué)習數(shù)據(jù)和工作負載的分布來縮小與專用解決方案之間的差距。
考慮一個極端情況:我們希望使用連續(xù)整數(shù)鍵來存儲和查詢固定長度記錄的范圍。這種情況下使用傳統(tǒng)索引沒有任何意義,因為連續(xù)整數(shù)鍵本身可以用作偏移量。AC程序?qū)?00M整數(shù)加載到一個數(shù)組中,并在一個范圍內(nèi)求和,運行時間約為300ms。在Postgres中執(zhí)行相同的操作大約需要150秒:通用目的設(shè)計多花了500倍的時間。
“我們可以利用精確數(shù)據(jù)分布優(yōu)化數(shù)據(jù)庫使用的絕大多數(shù)算法或數(shù)據(jù)結(jié)構(gòu)。這些優(yōu)化有時甚至可以改變眾所周知的數(shù)據(jù)處理算法的時間復(fù)雜度。”
數(shù)據(jù)分布以(學(xué)習的)模型的形式出現(xiàn)。有了這樣的模型,作者認為我們可以自動形成索引結(jié)構(gòu),完成排序和連接算法甚至整個查詢優(yōu)化器,利用數(shù)據(jù)分布模式來提高性能。
過擬合是很好的選擇
什么樣的模型有意義?例如,直方圖是一個非常簡單的模型,但對于此處討論的用例,要么太粗糙,要么太大而無法使用。另一方面,深度神經(jīng)網(wǎng)絡(luò)成本很高(盡管隨著硬件的進步,預(yù)計會減少這些成本)。結(jié)合上述事實和用例,“過擬合”是一個好的選擇!我們希望盡可能精確地獲得準確數(shù)據(jù)的細微差別。(迄今為止的研究計劃主要集中在分析工作負載上)。
‘截至今天,我們發(fā)現(xiàn)經(jīng)常需要生成特殊模型才能看到顯著的性能提升?!?/span>
例如,考慮“學(xué)習索引結(jié)構(gòu)的案例 ”[1]一文中的RMI模型:
1.在數(shù)據(jù)上擬合簡單模型(線性回歸,簡單神經(jīng)網(wǎng)絡(luò)等)
2.使用模型的預(yù)測值來挑選另一個模型,即專家,它可以更準確地模擬數(shù)據(jù)子集
3.重復(fù)該過程,直到葉模型進行最終預(yù)測
RMI只是一個起點。例如,還可以使頂部模型或底部模型更復(fù)雜、在特定級別階段用其他類型的模型替換部分模型、使用量化、改變特征表示、將模型與其他數(shù)據(jù)結(jié)構(gòu)組合等等。因此,我們相信將看到很多新理念爆炸式地出現(xiàn),這些新理念是關(guān)于如何在給定工作負載情況下最有效地為數(shù)據(jù)庫組件生成模型,并在精度,低延遲,空間和執(zhí)行時間之間實現(xiàn)很好的平衡。
數(shù)據(jù)訪問
去年發(fā)表的“學(xué)習索引結(jié)構(gòu)的案例”的論文表明,基于RMI的索引可以勝過最先進的B-Tree性能的兩倍,同時規(guī)模小一些(“ 請注意,更新的arXiv版本包含新的結(jié)果 “)。后續(xù)工作已將其擴展到磁盤數(shù)據(jù)存儲,壓縮插入和多維數(shù)據(jù)。
對于多維數(shù)據(jù),基線是R樹(與B樹相對)。R-Trees將矩形映射到索引范圍列表,使得位于矩形中的每個點的索引包含在這些范圍的并集中。我們可以用學(xué)習模型替換R-Tree,就像B-Tree一樣。使RMI B-Tree有效替換的一個技巧是模型足以使我們“在正確的位置”,然后我們可以圍繞預(yù)測進行局部搜索以完成工作。對于R-Trees,我們還需要一種能夠?qū)崿F(xiàn)高效本地化搜索的布局。
“雖然存在許多可能的投影策略,但我們發(fā)現(xiàn)沿著一系列維度連續(xù)排序和分割點到相同大小的單元格會產(chǎn)生一個有效映射,一個可學(xué)習的布局(例如,與z順序相比,這很難學(xué)習)和密集(即,索引范圍并集中的所有點都滿足查詢)。”
作者使用壓縮在內(nèi)存中的列存儲,實現(xiàn)了上文的學(xué)習索引,并將其與完整的列進行掃描,對聚簇索引(按提供最佳整體性能的列排序)和R-Tree進行了比較。基準測試使用lineitem的TPC-H基準測試表中的6000萬條記錄,查詢選擇性為0.25%。
基于學(xué)習的索引完勝目前最佳性能的實現(xiàn)34倍(注意圖表上的日志比例),與集群解決方案相比,其空間開銷更小。
進一步的分析表明,學(xué)習的索引幾乎在每種類型的查詢中都勝過聚簇索引 - 例外情況是聚簇索引中的聚簇維度是查詢中的唯一維度。
這是本文最有趣的部分之一,因為它展示了學(xué)習模型如何能夠幫助處理這種不起眼的古老的分類案例。排序方法是使用學(xué)習模型將記錄按正確順序排列,然后將最新的完善排序數(shù)據(jù)作為最后一步進行糾正。為此,可以使用有效的局部排序,例如插入排序。
下圖顯示了從正態(tài)分布中隨機采樣的64位雙精度數(shù)據(jù),隨數(shù)據(jù)大小分類的學(xué)習方法的結(jié)果。在比較中,Timsort是Java和Python的默認排序,std::sort來自C ++庫。學(xué)習后的變體平均比下一個最佳(在這種情況下為Radix排序)快18%。
學(xué)習的模型也可用于改善連接。例如,考慮具有兩個存儲的連接列和每列模型的合并連接。我們可以使用該模型來跳過不會加入的數(shù)據(jù)(作者沒有詳細說明在這種情況下,“本地修補”的等價物是如何工作的)。
作者還嘗試了工作負載感知調(diào)度程序,使用圖形神經(jīng)網(wǎng)絡(luò)實現(xiàn)基于強化學(xué)習的調(diào)度
系統(tǒng):
“我們的系統(tǒng)將調(diào)度算法表示為神經(jīng)網(wǎng)絡(luò),其采用關(guān)于數(shù)據(jù)的輸入信息(例如,使用CDF模型)和查詢工作負載(例如,使用在先前執(zhí)行的查詢上訓(xùn)練的模型)來做出調(diào)度決策?!?/span>
在10個TPC-H查詢的示例中,使用學(xué)習算法的調(diào)度程序比Spark的默認FIFO調(diào)度程序?qū)⑵骄鳂I(yè)完成時間提高了45%。
調(diào)度程序?qū)W習如何實現(xiàn)這一改進策略是將快速完成短期工作與最大化集群效率相結(jié)合,學(xué)習在并行性“最佳點”附近運行工作。
傳統(tǒng)的查詢優(yōu)化器非常難以構(gòu)建,維護通常會產(chǎn)生次優(yōu)的查詢計劃。優(yōu)化器的脆弱性和復(fù)雜性使很難其成為一個很好的候選者...
從傳統(tǒng)成本模型開始并通過學(xué)習隨著時間的推移對其進行細化的初步實驗表明,模型質(zhì)量可以得到改善,但要獲得大幅收益,則需要對基數(shù)估算進行重大改進?,F(xiàn)在的研究方向(尚未報告結(jié)果)是探索基于混合模型的基數(shù)估計方法。這些混合模型結(jié)合了基礎(chǔ)數(shù)據(jù)模式和相關(guān)性的學(xué)習模型,以及捕獲特定數(shù)據(jù)實例的極端(并且難以學(xué)習)異常/異常值監(jiān)聽。
學(xué)習模型在未來可能證明有益的其他建議區(qū)域包括近似查詢處理,預(yù)測建模和包括插入和更新的工作負載。
SageDB提出了一種構(gòu)建數(shù)據(jù)庫系統(tǒng)的全新方法,它使用機器學(xué)習模型與程序相結(jié)合來生成系統(tǒng)組件。如果成功,我們相信這種方法將產(chǎn)生新一代大數(shù)據(jù)處理工具,可以更好地利用GPU和TPU,并在存儲消耗和空間方面提供顯著優(yōu)勢。
[1]https://blog.acolyer.org/2018/01/08/the-case-for-learned-index-structures-part-i/
本文轉(zhuǎn)自公眾號【騰訊數(shù)據(jù)庫TencentDB】,掃描以下二維碼可以關(guān)注。
總結(jié)
以上是生活随笔為你收集整理的前沿观察 | SageDB:一个自学成才的数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交付效率提升40%,珍爱网基于微服务的D
- 下一篇: MySQL之父与企鹅的故事