讀PolarDB論文有感:異構計算和數據庫軟硬一體化設計

引言

阿里巴巴在剛剛結束的國際頂級存儲行業會議 FAST 2020 貢獻三篇論文:

  • 《POLARDB結合可計算存儲: 高效支持雲原生關係數據庫的複雜查詢操作》
  • 《FPGA加速Compactions操作,基於 LSM-tree的鍵值存儲》
  • 《HotRing:熱點感知的無鎖內存鍵值系統》

再結合阿里雲數據庫掌門人李飛飛教授的《如何看待數據庫的未來》中提到的

新硬件 : 軟硬件一體化設計

無不透露着業界領頭羊正在定義雲原生數據庫的業界標準,數據庫不僅是運行在CPU和內存中的二進制代碼,也不再是高端硬件的簡單堆疊,關鍵硬件必須在設計階段就要針對數據庫特性做深度定製和優化,借用Alan Kay的名言:

People who are really serious about software should make their own hardware.

以下的文字只當是”囫圇吞棗“後的一些粗淺思考。受本人能力所限,未盡之處,實屬應當。

”隨風潛入夜,潤物細無聲“,其實數據庫軟硬件一體化的進程早在十幾年前就以不易察覺的方式拉開序幕。

拿來主義

在2010年,筆者第一次在生產環境接觸Infiniband技術,當時Oracle RAC (real application cluster)就通過超算領域(HPC)的Infiniband網絡技術優化集羣實例之間的內存數據(Cache Fusion)交互。相比萬兆網絡,Infiniband不僅提供更高帶寬和更低延時,基於RDMA 提供 Zero Copy 和 Asynchronous I/O特性進一步提升通訊協議效率,同時極大減少對CPU資源的消耗。

同年,也開始在電商數據庫生產環境應用固態盤(SSD)技術。要說明白SSD的價值,先簡單贅述關係型數據庫中的預寫式日誌(Write-ahead Logging,簡稱WAL)機制,WAL是爲關係數據庫系統(RDBMS)提供原子性和持久性(ACID屬性中的兩個)的關鍵技術,我們常用的關係型數據庫Oracle,MySQL(Innodb Engine)和SQL Server都基於WAL實現(具體實現各有不同)。

Oracle中又叫Online redo log(後面簡稱log),log持久化延時直接影響到TPS(Transaction per Second),在OLTP(在線交易)場景中TPS是度量數據庫性能的最關鍵指標。相信所有Oracle DBA都對“log file sync”和“log parallel wirte”兩個等待事件極爲熟悉,基於實踐“log file sync”延時超過3ms,訪問數據庫的應用就會覺得”慢“。固態盤(SSD)簡單粗暴的大幅度降低log寫入延時。當時寫入放大(Write Amplification,簡稱WA)和垃圾回收(Garbage Collection,簡稱GC)的問題還比較明顯,甚至連SSD寫入壽命的監控接口都還沒有,但是大家都意識到對於數據庫而言這是革命性的技術變革。也有人早早做出判斷SSD是最近10年數據庫(當時多指關係型數據庫)領域最大的技術革命。

這個階段的明顯特點就是”拿來主義“。Infiniband 和 SSD並不需要針對數據庫做優化就可以獲得顯著收益。

簡單定製

任何軟件技術都很難脫離硬件技術憑空臆想,關係型數據庫理論誕生於60年代末70年代初,其設計思路受限於當時的磁盤技術。

僅以 MySQL 數據持久化中的一個場景展開。MySQL 實例會將內存中的髒數據(被修改過)以數據頁爲單位寫入磁盤持久化。一個數據頁的大小是16KB,假設寫入2KB時服務器異常掉電,這時數據頁的前2KB已被更新,剩下的14KB還未被更新,那麼該數據頁因爲部分寫(partial write)問題被寫壞。而 MySQL redo log 不能修復此類壞數據頁,導致數據丟失。

受限於機械磁盤只能提供512B的原子寫(Atomic Write),Innodb Engine 通過 Double Write 機制解決該問題,副作用也很明顯,不僅增加存儲引擎代碼複雜度,也引入額外的磁盤寫入壓力,讓寶貴的存儲資源(IOPS)更加緊張。

如果MySQL依賴的存儲介質可以提供可配置寫入大小的原子寫(Atomic Write),可以直接關閉Double Write,這會在以下幾個方面帶來巨大收益:

  • 直接提升TPS,以 MariaDB(MySQL 分支)爲例.關閉 Double Write 能帶來30%左右的提升,如下圖所示:

  • 簡化寫入鏈路也間接優化實例恢復邏輯,如下圖所示:

  • 在計算存儲分離的部署架構下,顯著降低計算節點和存儲節點的數據交互,在TPS提升11%,QPS提升28%的情況下,網絡吞吐僅增加3.6%。(底層存儲使用Elasticfile,目前已經被Google收購)

有實力的硬件廠商已經陸續提供大頁的原子寫(Atomic Write)特性,比如Intel、Sandisk和Scaleflux。留心的讀者應該可能已經發現,一些公有云RDS廠商在使用具備該特性的硬件後,已經默認關閉Double Write功能。

相比“拿來”階段,硬件廠商更懂數據庫,不過依然是沒有跳出“傳統”的存儲認知範疇。

摩爾定律失效

這裏跑題說一下摩爾定律,2016年2月9號的全球最知名的學術刊物《自然》雜誌的《The chips are down for Moore’s law》寫到即將出版的國際半導體技術路線圖不再以摩爾定律(Moore’s law)爲目標,芯片行業50年的神話終被打破。

這意味軟件不再享受18個月一次的CPU算力倍增的訂閱服務,也意味着CPU算力更加珍貴。

基於異構計算的軟硬件一體化設計

2017 年圖靈獎獲得者John L. Hennessy and David A. Patterson在他們的文章《A New Golden Age for Computer Architecture》中給出答案

As the focus of innovation in architecture shifts from the general-purpose CPU to domain-specific and heterogeneous processors, we will need to achieve major breakthroughs in design time and cost.

比如在機器學習領域使用GPU替代CPU進行大規模的矩陣運算,論文《POLARDB Meets Computational Storage: Efficiently Support Analytical Workloads in Cloud-Native Relational Database》也在數據庫領域做出呼應。如論文中所述:

Table scan over row-store data does not fit well to modern CPU architecture and tends to largelyunder-utilizeCPU hardware resources.

OLAP場景中的表掃描(Table scan)對CPU並不友好,POLARDB將表掃描下推(pushdown)到具有計算能力(基於FPGA)的存儲介質,論文中又叫近存儲計算(Computational Storage),如下圖所示:

更多細節請移步論文《POLARDB Meets Computational Storage: Efficiently Support Analytical Workloads in Cloud-Native Relational Database》。Scaleflux 首席科學家張彤教授也在FAST 2020上做了專題演講,感興趣的讀者也應該一併閱讀。

表掃描(Table scan)下推對 MySQL DBA並不陌生,MySQL 5.6 推出 Index Condition Pushdown(簡稱ICP)特性。未啓用ICP特性時,會按照第一個索引條件列到存儲引擎查找數據,並把整行數據提取到實例層,實例層再根據Where後其他的條件過濾數據行。啓用ICP特性後,如果Where條件中同時包含檢索列和過濾列,且這些列上創建了一個多列索引的情況下,那麼實例層會把這些過濾列同時下推到存儲引擎層,在存儲引擎層過濾掉不滿足的數據,只讀取並返回需要的數據,減少存儲引擎層和實例層之間的數據傳輸和回表請求,通常情況下可以大幅提升查詢效率。下圖可以很直觀的看到ICP啓用前後的數據鏈路:

  • 關閉 ICP

  • 啓用 ICP

試想,如果把類似“Index Condition Pushdown”的工作下推(pushdown)給具備計算能力的存儲介質,會不會得到類似POLARDB的收益呢?

在過去,只有Oracle才具備軟硬一體化設計的實力。Exadata 無疑是一體化設計的先驅,其吸納大量”異構“硬件,其在10年前就引入PCIe SSD(又叫Flash),還在 X4 版本推出基於PCIe SSD的”透明“壓縮(Exadata Flash Cache Compression),試圖在易用、成本和性能三者之中找到完美平衡,功能描述如下:

Flash cache compression dynamically increases the logical capacity of the flash cache by transparently compressing user data as it is loaded into the flash cache. This allows much more data to be kept inflash,and decreases the need to access data on disk drives.

雖然該特性既不足夠透明也不便宜,但足見其軟硬通喫的野心。

開始的結束

歷經50年的發展,海量的公司和研發在關係型數據庫上構建無數的關鍵應用,朝夕相處讓他們對數據庫的痛點如數家珍,而這些痛點在傳遞到硬件廠商的過程中嚴重衰減,即便融合也是極少數巨頭祕而不宣的獨門祕籍。POLARDB無疑在異構計算和數據庫搭建一座更多人可以經過的橋樑,借用丘吉爾的名言,相信這僅僅只是”開始的結束“。

Now this is not the end. it is not even the beginning of the end. but it is perhaps the end of the beginning。

作者介紹

熊中哲,現任才雲科技工程VP,負責產品和研發工作。曾就職於阿里巴巴、沃趣科技、美團。超過12年數據庫領域的工作經歷,目前對雲原生,機器學習和異構計算也很感興趣。

原文鏈接

https://mp.weixin.qq.com/s/pS7_P_kQa7qkZaFEzhOM_Q

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章