2019,遇見最好的 MySQL 數據庫

2019年,關於 MySQL 的新特性、新版本消息不絕於耳:

2019,10月,MySQL 8.0.18 發佈,支持 HASH JOIN;2019,4月,MySQL 8.0.11 發佈,實現比 MySQL 5.7 快 2 倍的速度;

MySQL 一直是互聯網數據內核的主宰,但是在經歷從互聯網到企業級的轉變中,卻是困難重重。然而在 2019年,越來越多的企業級客戶開始在業務核心中使用 MySQL 數據庫,這是一個標誌性的轉變,代表 MySQL 打開了更廣泛的企業市場,而MySQL的技術變革也正在以更快的步伐去滿足更廣泛的用戶需求。

毫無疑問,MySQL 是當今 最流行的數據庫 和 最流行的開源數據庫,在 DB-Engines 上,MySQL 的流行度幾乎和 Oracle並駕齊驅,但是考慮到 Oracle 很多時候代表的不僅僅是 Oracle 數據庫(更多的是代表一家公司),而 MySQL 就僅指 MySQL數據庫,所以事實上,即便在指標上,MySQL 數據庫可能早已凌駕於榜首之上。


2019,遇見最好的 MySQL 數據庫



而在 DB-Engines 的榜單上,還有一系列的獨立數據庫品牌是在 MySQL 的基礎上發展而來的,MySQL 的生態龐大而無以倫比。

在中國的國產數據庫領域,幾乎所有的雲廠商都有基於 MySQL 的 RDS 提供,而更進一步的,頭部的 IT 廠商也都幾乎基於 MySQL 發展出獨立的解決方案或產品,這進一步推動了國內 MySQL 的廣泛應用和發展。接下來讓我們細數一下那些改變數據庫核心應用的 MySQL 數據庫們。


POLARDB for MySQL


PolarDB for MySQL,POLARDB是阿里雲自主研發的,與MySQL完全兼容的雲託管數據庫產品,採用了分佈式存儲引擎、計算和存儲分離的架構,單庫最多可擴展到16個節點,存儲容量最高可達100TB。


2019,遇見最好的 MySQL 數據庫

PolarDB 架構的設計特點包括:一寫多讀,計算與存儲分離,讀寫分離,高速鏈路互聯,共享分佈式存儲,數據多副本、支持Parallel-Raft協議

POLARDB在2019年發佈了POLARDB MySQL 8.0兼容版,是第一個兼容MySQL 8.0版本的雲原生數據庫,據悉POLARDB的高性能存儲引擎X-Engine即將發佈,X-Engine存儲引擎具有高性能和高壓縮率,經歷了2018年雙11的實戰考驗。

根據官方信息,阿里雲POLARDB 8.0版本提供了更多的內核引擎功能,比如:

獨立可擴展的共享Buffer Pool、行級壓縮、全球實例支持、並行DDL、分區表自建索引以及自建分區表等。


2019,遇見最好的 MySQL 數據庫

並行查詢是POLARDB 8.0版本推出的一個特性,在TPCH 100G數據量的情況下,使用POLARDB並行查詢時70%的查詢可以被加速,40%的加速比超過10倍。在未來,POLARDB會實現自動的DOP以及ResourceManager,並將支持Subquery、GIS和Blob以及Procedure等。


2019,遇見最好的 MySQL 數據庫

通過以上的介紹,大家可以看到雲數據庫的發展速度,並行查詢、高壓縮比的存儲引擎,這些都會為用戶帶來實際的收益。並行DDL、分區表自建索引等特性,其實已經將 MySQL 的特性極大的拉近到Oracle數據庫的層面上來。

我非常期待阿里雲的 X-Engine 引擎,眾所周知,Oracle 在Exadata中提供了強大的混合列壓縮特性,但是不開放給非一體機用戶,在開源的世界裡,自由的改造和創新為數據庫帶來了無以倫比的活力!


騰訊 TDSQL

騰訊的 TDSQL ,全稱 Tencent Distributed mySQL -騰訊分佈式MySQL,是針對金融聯機交易場景的高一致性數據庫解決方案。

2019 年 9 月 12 日,騰訊雲官方宣佈了 TDSQL 在張家港農村商業銀行正式落地,成為國內首個被銀行在傳統核心業務場景中使用的國產數據庫。


根據報道,在遷移之前,張家港行使用的是 Sybase 數據庫,遷移的核心繫統的數據量在 TB 級,包括了賬戶、賬目、流水、賬單、日誌等數據。核心系統主要分為兩大部分,一個為交易子系統,覆蓋銀行卡、資金管理等等;另一個為

會計子系統,主要是資金的交易分離、清算總賬。

2019 年 8 月 16 日下午 6 點,張家港行開始進行新核心系統的上線工作,數據庫割接通過原有數據的導出、TDSQL 數據的導入以及中間數據的加工校驗。48 小時之後整個改造工作結束。新核心在至今一個多月的時間裡,數據庫運行穩定各項指標均正常,即使業務高峰期數據庫也維持極低負載

接下來我們來簡單瞭解一下 TDSQL 的架構。

TDSQL 是由決策調度集群 /GTM,SQLEngine、數據存儲層等核心組件組成,每個模塊都基於分佈式架構設計,可以實現快速擴展,無縫切換,實時故障恢復等,通過這一架構,TDSQL 的 Noshard、Shard、TDSpark 實例可以混合部署在同一集群中。

TDSQL 的核心思想有兩個:數據的複製(Replica)和分片(Sharding),其中

replica 配合故障的檢測和切換,解決可用性問題;Sharding 配合集群資源調度、訪問路由管理等,解決容量伸縮問題。


在最終實現上,TDSQL 由 Scheduler、Gateway、Agent 三個核心組件加上 MySQL 組成:


2019,遇見最好的 MySQL 數據庫


TDSQL 在 SQLENGINE 實現了基於代價的查詢引擎 (CBO),實現了基於 shard key 下推,索引條件下推,驅動表結果下推,null 下推,子查詢下推, left join 轉化成 inner join 等,以提供更好的分佈式查詢的能力,支撐金融交易的關聯操作。


TDSQL 仍然是

通過經典的 XA 兩階段提交加兩階段封鎖協議實現了強分佈式事務的語義,在使用語法上與 MySQL 完全一樣,即後端的分佈式事務處理對業務使用方是完全不感知,以保證兼容性。


2019,遇見最好的 MySQL 數據庫


張家港農村商業銀行的項目實施過程分為兩個階段,功能性改造,性能優化。

整個改造過程是從簡單到複雜,先從高頻交易入手,集中處理與高頻交易相關的業務以及子系統,然後是跑批類交易。

從集中式架構轉變到分佈式架構,要求所有的庫表都要重新設計,這是所有數據庫做分佈式改造時都無法避免的問題。如何根據全局業務,選擇最佳的數據分佈策略,是分佈式改造需要面對的首要問題。即使確定了分片關鍵字,還需要對該分片關鍵字以及索引做持續優化調整以尋求最佳實踐。

兼容性差異,包括兩部分:Oracle 生態與 MySQL 生態、集中式架構與分佈式架構的差異,TDSQL 做了大量對 Oracle 語法兼容性的優化。對於一些不太適合分佈式場景下的使用特性如:存儲過程、視圖、觸發器等,將更合適放到應用層的部分邏輯上移,實現了更為徹底的分佈式架構,極大提升了整體的水平擴展性。

針對複雜 SQL 問題,業務側通過調整分片關鍵字和複雜 SQL 拆分兩個方面做優化,讓 SQL 儘可能限制在一個數據節點內。針對無法避免跨多個數據節點的表關聯,

TDSQL 做了大量複雜 SQL 的優化,如:子查詢上提、左連接消除、豐富下推邏輯以及基於統計信息的條件推導邏輯等,儘可能提高處理這種複雜 sql 的性能。

TDSQL 還承載了微眾銀行 99% 以上線上數據庫業務,微眾和騰訊雲合作的 TDSQL 智能運維 - 扁鵲項目,已在微眾銀行灰度上線,可以實時分析 TDSQL 的運行狀態和性能問題,是智能化運維方面的有益探索。

2019,遇見最好的 MySQL 數據庫

中興 GoldenDB


中興 GoldenDB 數據庫。它是中興面向金融領域,自主研發的一款基於 MySQL 的分佈式數據庫。

中信銀行信用卡核心業務將於2019年下半年全部遷移到GoldenDB數據庫上,承載起核心金融的重要使命。

2019,遇見最好的 MySQL 數據庫

GoldenDB 的特性描述包括(來自官網):

  • Share Nothing全分佈式架構:計算存儲分離、存儲節點具備強大的本地計算能力;無單點故障瓶頸,設備故障情況下,依舊保證數據零丟失、提供不間斷服務;橫向擴展,通過設備堆疊無限擴展計算性能和存儲容量;支持超大規模節點的可視化監控運維;
  • 高效可靠的容災能力:金融級多地多中心多活架構,實現RPO=0,RTO<30S,數據永不丟失,災難情況下業務快速平穩切換;
  • 不停服務的在線擴容:支持哈希、列表、範圍、複製四種分片規則;支持熱點庫分裂,保證數據分佈均衡;支持多表關聯擴容,減少跨庫關聯查詢;擴容計劃靈活配置,擴容過程可視化管理;
  • 金融級實時一致的分佈式事務:引入全局事務管理器,保證分佈式事務的實時一致性;對應用透明的分佈式事務處理,應用無需改造;一階段提交+自動補償機制,提升分佈式事務處理性能;
  • 金融級可靠性:快同步複製保證數據不丟失,分組複製保證業務不中斷,高低水位實現策略靈活可配置;
  • 功能完備的備份恢復:支持全量、增量、實時和定時的備份策略,支持數據恢復到任意時間點,支持恢復到全局一致的數據狀態;
  • SQL兼容:兼容標準SQL語法、MySQL語法、Oracle常見語法,支持分佈式優化、分佈式批處理。



分享到:


相關文章: