一、基礎設施和資料庫的演化趨勢
(一)資料庫演化趨勢

資料庫可以分為三個時代,第一個時代是IT時代的商業資料庫時代,經典産品有Oracle和DB2,計算的基礎設施是IOE,主要客戶是大中型企業。
第二個時代是網際網路時代的開源資料庫,當時許多公司的資料庫主要是LAMP,目前行業的許多資料庫技術也是從這個時代積累而來。
第三個時代是萬物互聯時代的雲原生資料庫,有了共享雲存儲,做了存儲計算分離,以前高端的硬體慢慢在普适化。
無論是部署量還是規模上,開源生态正在超越商業資料庫的生态。目前不斷湧現的資料庫,通常都會相容開源生态或者自己開源。
資料庫的發展演進從最初在雲下,後來慢慢到了雲上,如今又有走向雲下的趨勢。我們發現,原來商業資料庫的一些東西又回來了,如很多大客戶喜歡的特性,是開源資料庫不具備,而商業資料庫所擅長的。如何在開源資料庫上做好企業級特性,我們在這上面做了大量的工作。
(二)基礎設施演化趨勢
- 本地雲
1)公共雲控制台
2)網絡互通
3)新購+利舊
4)彈性極強
從本質上看,公共雲像一個大機房,本地雲是一個小的機房,小機房和大機房體驗基本一緻。
- 專有雲
1)獨立控制台(飛天标準底座)
2)網絡可隔離,可控性更強
3)官方+夥伴托管
4)100~1000台,彈性強
專有雲規模較大一些,和公共雲網絡是弱連接配接,通常情況下選擇這種形式的客戶對安全性保密性要求比較高。
- 靈活專有雲
1)DBStack(飛天靈活底座)
2)網絡可隔離,産品可選配
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,我們還在多機上并行執行,如下圖所示。
目前單機的加速效果将近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業務的同時幫助客戶完成數字化轉型更新。