一、基礎設施和數據庫的演化趨勢
(一)數據庫演化趨勢
數據庫可以分為三個時代,第一個時代是IT時代的商業數據庫時代,經典產品有Oracle和DB2,計算的基礎設施是IOE,主要客戶是大中型企業。
第二個時代是互聯網時代的開源數據庫,當時許多公司的數據庫主要是LAMP,目前行業的許多數據庫技術也是從這個時代積累而來。
第三個時代是萬物互聯時代的雲原生數據庫,有了共享雲存儲,做了存儲計算分離,以前高端的硬件慢慢在普適化。
無論是部署量還是規模上,開源生態正在超越商業數據庫的生態。目前不斷涌現的數據庫,通常都會兼容開源生態或者自己開源。
數據庫的發展演進從最初在雲下,后來慢慢到了雲上,如今又有走向雲下的趨勢。我們發現,原來商業數據庫的一些東西又回來了,如很多大客戶喜歡的特性,是開源數據庫不具備,而商業數據庫所擅長的。如何在開源數據庫上做好企業級特性,我們在這上面做了大量的工作。
(二)基礎設施演化趨勢
上圖為阿里雲數據庫基礎設施演化趨勢,從最初的On-Premises機房,到如今的公共雲。為了更好地服務客戶,阿里雲在公共雲的基礎上,衍生出了四種形態。
-
本地雲
1)公共雲控制台
2)網絡互通
3)新購+利舊
4)彈性極強
從本質上看,公共雲像一個大機房,本地雲是一個小的機房,小機房和大機房體驗基本一致。
-
專有雲
1)獨立控制台(飛天標准底座)
2)網絡可隔離,可控性更強
3)官方+伙伴托管
4)100~1000台,彈性強
專有雲規模較大一些,和公共雲網絡是弱連接,通常情況下選擇這種形式的客戶對安全性保密性要求比較高。
-
敏捷專有雲
1)DBStack(飛天敏捷底座)
2)網絡可隔離,產品可選配
3)官方+伙伴托管
4)10~100台,彈性適中
阿里雲有一款產品叫DBStack(飛天敏捷底座),可以脫離硬件存在。
比如客戶要做去O,去完之后剩下的硬件可以直接部署DBStack(飛天敏捷底座),上面運行RDS,ADB,ADS等,是一套完整的數據解決方案。
-
被集成
1)第三方集成(無底座)
2)嵌入客戶解決方案
3)軟件/軟硬一體
4)官方+伙伴托管
通過線下集成商的分發渠道,我們可以將數據庫技術包裝在他們的產品中,直接對外分發。比如像超圖,其內核能力就是阿里雲的產品PolarDB。
二、PolarDB企業級特性解讀
(一)PolarDB-X 2.0整體架構
PolarDB-X是PolarDB的分布式版,我們在2021年3月份對PolarDB-X進行架構升級到2.0版本,升級后的架構如下所示。
PolarDB-X 2.0整體架構圖
PolarDB-X 2.0主要有以下特性:
1. 元數據服務(Global Meta Service,GMS)
-
提供全局授時服務(TSO)
-
維護Table/Schema、Statistic等Meta信息
-
維護賬號、權限等安全信息
2. 存儲節點 (Date Node,DN)
-
基於多數派Paxos共識協議的高可靠存儲
-
處理分布式MVCC事務的可見性判斷
3. 計算節點(Compute Node,CN)
-
基於無狀態的SQL引擎提供分布式路由和計算
-
處理分布式事務的2PC協調、全局索引維護等
4. 日志節點(Change Data Capture,CDC)
-
提供兼容MySQL生態的binlog協議和數據格式
-
提供兼容MySQL Replication主從復制的交互
要特別強調的是,在一個分布式數據庫里面Binlog分為許多份,日志節點可以和全局授時服務相結合,把分布式的多份Binlog合成一份,這對MySQL用戶非常友好。
(二)PolarDB-X 2.0強一致MVCC事務
有了全局授時時鍾之后可以做全局強一致MVCC事務。雖然它是一個分布式的數據庫,但是無論從性能、產品體驗還是生態工具上,使用體驗接近於一個單機MySQL,而且可以無限線性擴展。
(三)PolarDB-X 2.0 CDC
在2.0架構之前,很多客戶抱怨在雲上用PolarDB時,如果要把日志同步到線下機房做數據分析,無法搭起鏈路。
2.0架構上線之后這個問題可以通過CDC特性解決。只要一條網絡鏈路,就能把數據全部同步,並且我們做了一個聚合,保證全局事務的順序。
CDC特性如下:
1. 全局 binlog
-
兼容事務 (分布式事務全局排序)
例:基於TraceId、TSO信息對Binlog全局排序
-
兼容分布式DDL
例:可支持DDL同步到下游,比如ADB
-
兼容分布式擴縮容
例:屏蔽內部分片遷移、廣播表、索引等數據干擾
2. 主備 Replication
-
兼容MySQL生態的主備復制
例:MySQL作為PolarDB-X的備庫,支持數據回流能力
-
兼容DTS的上下游生態
例:打通Oracle/DB2/PolarDB/ADB等數據庫生態
如上圖所示,PolarDB-X的兩個集群可以互相做主備,MySQL和PolarDB-X也可以做主備切換,具備很好的生態兼容性。
(四)PolarDB HTAP
在過去的這段時間,PolarDB在分析能力上也做了很大的提升,下方是PolarDB單機並行的架構圖。
並行查詢特性如下:
-
通過分割B+Tree來分配任務,每個線程(Worker)關注一部分分區。
-
通常上層Server層計算的線程數遠遠小於分區數,使得每個線程可以得到的數據計算分區很多。
-
“Fast”的worker線程可以處理更多的較小數據分區,“slow”的線程處理較少的但是比較大的數據分區,從而達到整體計算無差別。
-
每個工作線程可以自動去獲取下一個要處理的數據分區(Round Robin模式)。
上方講的是單機的SMP,我們還在多機上並行執行,如下圖所示。
目前QQ號碼買賣地圖單機的加速效果將近15倍,如果上方的MTP這個架構出來,整體還會有一個更大的提升。
TPCH 加速效果顯著
-
TPCH 100G 32core/512G (BP 170 GB) (32 並發 vs 不開並發);
-
TPCH 100% SQL 可被加速,73%加速比超過8倍,總加速近15倍。
(五)PolarDB Global Database
如上圖所示,PolarDB Global Database分為三個地方,張北、香港和美國硅谷。
PolarDB Global Database四大特性:
-
全球部署(Global Deployment)
數據跨地域同步,提供全球跨地域的容災能力。RPO=0 SLA為99.99%
-
就近讀加速(Accelerate by Reading the Nearest Node)
讀操作就近讀取數據,適合不同地域讀多寫少的場景。
-
多通道物理復制(Multi-Channel Physical Replication)
提供數據跨地域的高速同步,大壓力場景下全球同步延遲確保在2秒以內。
-
多點跨地域寫(Write to Multi Zones and Regions)
提供多點跨地域寫功能,提供業務的多地部署能力。
傳統的MySQL部署三地模式一般用Binlog同步,Binlong存在的問題是遇到大事務容易卡住。PolarDB用Redo做物理復制,而且它是多通道的,可以做並行復制與延遲同步。延遲同步的好處是存在更改余地,比如和美國硅谷做近實時同步,和香港做半天延遲同步,防止刪庫等誤操作,安全系數非常高。
(六)PolarDB 熱備
PolarDB還有一個非常好的特性,那就是PolarDB熱備。
HRO特性:
1)內存和Redo實時同步;
2)主備切換秒級;
3)升降級切換不可用時間控制在5秒以下;
4)通過voting disk 進行主動故障切換。
Oracle的Rock主要是做高可用,一般超過兩個節點的用戶很少,四個節點更是鳳毛麟角。通常情況下,用戶的兩個節點一個做寫的負載均衡,還有一個做高可用,這在電信場景里面非常常見。
PolarDB的為寫節點提供熱備,這個熱備會同步Buffer Pool,然后會把內存和Redo實時同步,在發生切換時,可以在極短的時間完成,保證業務穩定運行。
(七)PolarDB 多租戶
PolarDB還有一個特性是多租戶多寫。
多寫的意思是每個寫節點負責不同的表,比如在某個SaaS場景中,一個數據庫服務100個用戶,這100個用戶的數據互相隔離,每個用戶可讀可寫,每個寫節點之間的數據互不干擾,這種場景用一個PolarDB就可以支撐。
-
多租戶特性
1)多租戶多寫(multi-tenant multi-master);2)支持128個RW;3)支持non-conflict multi-master write;4)Partition/table/schema binds to RW;5)庫表寫入點秒級切換。
(八)PolarDB 混合雲-DBStack
阿里雲有個混合雲叫DBStack,如上圖所示,它既支持X86也支持ARM,能做國產化全加密一體機。
上圖是運行在國產化全加密一體機上的管控平台,它和公有雲的體驗幾乎是一致的,但是更小更清亮。
三、Roadmap
存儲計算分離是這幾年數據庫發展中最重要的一個變化。近年來成功的商業數據庫,如Snowflake、Oracle、RDS等,全部是存儲計算分離的。
未來的PolarDB會做Share Nothing & Everything 一體化,架構圖如下所示。
PolarDB Share Nothing & Everything 一體化架構優勢:
-
Leverage PolarDB已有基礎設施,存儲、管控、監控、審計等功能共享;
-
Share Nothing基於存儲計算分離架構,無限擴展,並且無需數據遷移,並可徹底消除傳統分布式Data Skew問題;
-
Share Everything場景寫瓶頸大幅緩解,多節點可寫;
-
無縫升級,可由單表直接轉化成分布式表,一鍵操作即可完成分布式改造(alter table to partition_table by hash_range ***);
-
兩種場景都有極強高可用性;
-
兼容性和擴展性都能完美支持,在兼顧legacy業務的同時幫助客戶完成數字化轉型升級。