1、TDSQL PostgreSQL版企業級分布式數據庫技術創新實踐騰訊云高級工程師 謝燦揚TDSQL-PG 簡介整體介紹TDSQL-PG的由來與架構TDSQL-PG 重點能力介紹TDSQL-PG的重點能力TDSQL-PG經典用戶案例微信支付,第七次人口普查等CONTENTTDSQL-PG 簡介TDSQL-PG(原TBase)簡史TDSQL-PG是基于PostgreSQL研發的分布式數據庫:V1:具備完整的分布式事務處理能力,具有良好SQL兼容性及在線擴展能力V2:數據更安全,具備三權分立安全體系,內核獨有支持透明數據脫敏V3:支持OLAP在線分析業務處理,更完備的并行處理能力,提供一站式整體解決
2、方案V5:支持Oracle語法兼容,讀寫分離功能引 入 PostgreSQL作為TDW的補充,彌補TDW小數據分析性能低的不足TDSQL-PG V1發布數平內部開始使用TDSQL-PG 微 信 支付商戶集群上線,目前每天超過5億筆交易TDSQL-PG V2發布同年5月份在數字廣東及云南公安上線TDSQL-PG V3發布PICC集團業務上線TDSQL-PG V5發布兼容Oracle的運營商業務上線TDSQL-PG的定位TDSQL-PG 是騰訊自主研發的新一代分布式國產數據庫,其具備業界領先的HTAP能力,在提供大型數據倉庫處理能力的同時還能完整支持事務。無共享MPP兼容SQL2003完整分布式事
3、務強悍數據分析能力TDSQL-PG整體能力三權分立能力強制安全規則數據審計能力數據透明脫敏數據透明加密MLS安全保護能力高效彈性在線擴容長尾數據冷熱分離成本解決方案用戶無感知的數據傾斜解決方案兩地三中心容災能力強大數據治理能力SQL語法兼容SQL2003標準窗口分析函數Oracle常用函數支持Oracle常用語法支持數據庫特性豐富千萬級TPS事務處理能力全局sequence支持支持全并行分布式計算架構,高效完成OLAP計算高效HTAP能力UDF/UDAF/UDWF存儲過程,自定義操作符自定義FDW(訪問外部數據源)擴展性良好Libpq(C/C+)Jdbc/odbcEcpg/python 訪問接
4、口豐富TDSQL-PGTDSQL-PG適用場景業務場景HTAP業務地理信息系統實時高并發系統數據庫國產化數據量交易數據量大于1T以上,或分析數據量大于5T以上并發能力并發連接數量達到2000以上,業務要求每秒峰值100萬筆業務交易在線水平擴展替代業務原有需要分庫分表的場景HTAP能力具備高并發的OLTP處理能力的同時,兼顧相當量級的OLAP分析能力,支持一站式解決業務對數據庫的訴求分布式事務將事務機制融入到數據庫內,解決分庫分表模式的痛點TDSQL-PG總體架構|8Local DataLocal catalogDatanode1Global catalogCoordinatorTransact
5、ion InfoGlobal objectGTM-MTransaction InfoGlobal objectGTM-SGlobal catalogCoordinatorGlobal catalogCoordinatorLocal DataLocal catalogDatanode2Local DataLocal catalogDatanode3Datanode4Data Forward Bus集群數據交互總線Coordinator(協調節點CN)業務訪問入口,每個節點對等,對外提供一致視圖Datanode(數據節點DN)業務數據存儲節點GTM(事務管理器)全局事務管理器,協調集群集群事務,并
6、管理全局對象指標監控運維管理實時告警安全審計數據治理統一資源管理平臺TDSQL-PG 能力介紹多引擎:集中式分布式一體化(HTAP)集中式無縫擴展成分布式高度兼容ORACLE語法無分布式開銷分布式高度完整兼容ORACLE語法全局一致核心能力內容分布式事務能力分布式事務ACID能力,支持分布式一致性讀(RR,RC兩個隔離級別)分布式核心能力分布鍵更新,全局索引能力,高性能OLAP能力ORACLE兼容能力(金融/運營商場景98%兼容性)數據庫對象支持,數據類型支持,特有語法支持,PL/SQL支持,系統函數支持,高級包支持,Package,自治事務,查詢計劃綁定,GBK,GB18030,UTF8SQ
7、L引擎行表透明壓縮存儲引擎分布式元數據SQL引擎存儲引擎分布式元數據CN1SQL引擎存儲引擎分布式元數據CN2DN1行表透明壓縮存儲引擎分布式元數據DN2GTM行表透明壓縮存儲引擎分布式元數據全局時間戳服務基于GTS的MVCC并發控制邏輯時鐘從零開始內部單向遞增且唯一,由GTM維護,定時和服務器硬件計數器對齊;硬件保證時鐘源穩定度多個GTM節點構成集群,主節點對外提供服務;主備之間通過日志同步時間戳狀態,保證GTS核心服務可靠性段頁式存儲的MVCC是整個并發控制的基礎;同時約定:事務的gts_start gts_min并且gts_max沒有提交或者gts_start gts_max才能看到對應
8、的事務根據測試推算,TS85服務器每秒能夠處理1200萬QPS,幾乎能滿足所有場景需要GTM單點瓶頸問題GTS從哪里來MVCC能力01020304GTS核心要點GTM單點可靠性問題GTM集群CNDNDNCNgts_mingts_maxbalance1-110MVCC原理記錄結構數據庫節點Select balance;gts(6)Select balance;gts(8)7-15Update balance-=5;gts(7)1710全并行計算能力TBL_A(f1-分布列,f2)TBL_B(f1-分布列,f2)select*from tbl_a,tbl_bwhere tbl_a.f1=tbl_b
9、.f2;TBL_A.f1=TBL_B.f2CNTBL_A.f1=TBL_B.f2X4X3X2X1Y4Y3Y2Y1SSE 2/3 OPTBL_A.f1=TBL_B.f2X4X3X2X1Y4Y3Y2Y1SSE 2/3 OPTBL_A.f1=TBL_B.f2X4X3X2X1Y4Y3Y2Y1SSE 2/3 OPDN1DN2DN3Data Forward Bus集群數據交互總線節點級并行進程級并行SIMD指令級并行節點級并行節點內進程級并行SIMD指令級并行全局索引支持SELECT WHERE NAME=Mike;DN1DN2DN3CN非分布鍵查詢SELECT WHERE NAME=Mike;12DN1
10、DN2DN3CN非分布鍵查詢(全局索引)在非分布鍵查詢的場景下性能大幅度提高,是原有的4倍,接近分布鍵查詢性能。唯一索引,外鍵等約束之前都是需要在包含分布鍵,局限性比較大,全局索引可以在保證性能的同時放開約束,更貼近集中式系統。提升非分布鍵查詢性能支持非分布鍵約束0102特性支持QPSINSERT 單條 INSERT 5條UPDATEDELETESELECT非分布鍵索引分布鍵索引全局索引透明壓縮數據庫內核文件系統-壓縮的數據共享內存-解壓后的數據origin pagecopressedpageHole落盤壓縮讀出解壓計算引擎存儲引擎origin pageorigin pagecopressed
11、page05000100001500020000非壓縮壓縮磁盤占用對比圖020000400006000080000非壓縮壓縮tpmc對比圖0%20%40%60%80%非壓縮壓縮cpu使用對比圖壓縮結果-時間換空間:1、數據文件磁盤占用率下降70%,壓縮率達到30%2、cpu使用率增加20%,tpcc性能下降28%支持CRC循環校驗,避免不可預知的數據損壞backendwal日志ShareBuffDiskCRCCRCCRCCRCDisk業務UPDATECRCBlockCRCBlockXlogRecordMaster replicaSlave replicaReadWriteAsync ReadA
12、sync WriteCRC日志同步CRC全面檢測機制全路徑保護第一時間恢復業務塊級別增量修復實時故障探測;定期全量檢測;定期采樣檢測。從數據寫入緩存、寫入WAL日志、數據刷盤、數據同步,再到數據讀取,每個可能擴散環節都有阻斷措施,避免故障擴散。檢測到故障后,自動主備切換,保證數據正確的情況第一時間恢復業務,在啟動異步修復任務;支持從副本或者冷備中恢復。當數據錯誤/故障被發現后,系統自動發起以塊為單位的增量修復,防止副本級修復帶來的高時延和高資源消耗。Direct IO服務器dn001磁盤內存dn002cn001Page BufferPage BufferPage Buffer文件系統緩存IOI
13、O服務器dn001磁盤內存dn002cn001Page BufferPage BufferPage BufferDIOIOIOIOIODIODIO1)默認IO會使用文件系統緩存,因為DN/CN本身已經有數據頁緩存(Page Buffer),所以兩個緩存中可能有大量重復數據2)雖然文件系統緩存占用的內存可以被應用搶占,但回收時可能需要刷臟頁等,引起性能波動3)支持Direct IO,可以滿足部分時延敏感的長穩測試要求易用性提升內存占用至關重要,用函數返回當前節點的內存總覽以及各類內存的使用情況。由CN發出的事務在多個DN下存在多個進程,同一個事務用獨有的ID表示,用一個視圖展示所有CN、DN上的
14、進程狀態。方便管理。提供給前端一個殺死一個會話下所有進程的接口。內存占用視圖全局事務視圖0102特性支持匯報DN1DN2DN3CN2DN1DN2DN3CN1planplanplan查詢查詢查詢匯報會話ID節點名進程ID狀態運行時間會話1CN001100active138會話1DN001100active138會話1DN002100active138會話1DN001101active138會話1DN002101idle-會話2CN002100active55會話2DN001102active55會話3CN001101idle-TDSQL-PG經典用戶案例微信支付商戶系統案例CNCNCNCNCLB
15、DN1DN2DN3DN4小商戶熱GROUPDN4DN5DN6DN7DN8DN9大商戶熱GROUPDN10DN11DN12DN13DN14DN15小商戶冷GROUPDN16DN17DN18DN19DN20DN21大商戶冷GROUPDN22DN23CN近四個月數據使用高速設備保證性能四個月以前數據使用普通設備降低成本外部某保險案例DN SetCN SetCN(主)CN(備)DN(主)DN(備)只讀平面讀寫平面VIPVIPVPCTDSQL-PG業務讀寫只讀CN(備)DN(備)只讀平面CN(備)DN(備)只讀平面業務物理格式不一致kafka“no”:“int”,123“name”:“string”:”tony”“job”:“string”:”hairdresser”Logical_toolK2X第七次全國人口普查系統案例互聯網用戶:面向全國,1億+用戶,通過微信小程序自主填報;高并發:700萬+的普查員上班時間同時工作,通過企微小程序進行數據采集;海量數據:15天內完成全國短表數據采集,數據庫單表記錄20億+;實時同步:異構庫海量數據同步延遲達到分鐘級離線模式:在弱網的樓道或無網的山區等地都要能正常使用;業務復雜:每天平臺端的統計匯總任務十分繁重且多,一刻不能延緩普查員行為分析人員分布分析其他分析業務簡單查詢,30W QPS多表join,2W QPS百列寬表,復雜子查詢TDSQL-PG