Apache ShardingSphere 5.0.0-beta 版在經過長達半年的籌備后,終於將在近期正式 Release! 本文將帶領大家一同預覽新版本即將帶來哪些重大亮點功能。
作者介紹
潘娟 | Trista
SphereEx 聯合創始人
SphereEx co-founder, Apache member, Apache ShardingSphere PMC, Apache brpc(Incubating) mentor, 本次 Release manager。
前京東科技高級 DBA,曾負責京東數科數據庫智能平台的設計與研發,現專注於分布式數據庫 & 中間件生態及開源領域。被評為《2020 中國開源先鋒人物》,多次受邀參加數據庫 & 架構領域的相關會議分享。
作為 Apache 的頂級項目,ShardingSphere 的 Release 要經過社區驗證、投票、發布等環節,保證推出的版本符合 License 及 Apache Release 規范,且功能及項目層面盡可能符合預期,這是對項目本身及使用者的保護。當前版本已完成基本構建,預計本周內正式發行。
本次 Release 將會帶來以下重要特性:
1. 亮點功能
全新定義的分布式數據庫操作語言—DistSQL
SQL 是一種用於存取數據以及查詢、更新和管理關系數據庫系統的數據庫查詢和程序設計語言。1986 年 10 月,美國國家標准學會將 SQL 作為關系式數據庫管理系統的標准語言。現有通用數據庫系統在其實踐過程中都對 SQL 規范作了部分改寫和擴充,具有更高靈活性和更豐富的功能,使其適用於自身的數據庫系統。
DistSQL(Distributed SQL)是 Apache ShardingSphere 提出的,特有的一種內置 SQL 語言,能夠提供標准 SQL 之外的增量功能操作能力。DistSQL 讓用戶可以像操作數據庫一樣操作 ShardingSphere,使其從面向開發人員的框架和中間件轉變為面向運維人員的基礎設施產品。
在 ShardingSphere 中, DistSQL 目前主要划分為 RDL、RQL 和 SCTL 三種具體類型:
-
RDL(Resource & Rule Definition Language):資源和規則的創建、修改和刪除;
-
RQL(Resource & Rule Query Language):資源和規則的查詢和展現;
- SCTL(ShardingSphere Control Language):Hint、事務類型切換、分片執行計划查詢等增量功能操作。
ShardingSphere 推出 Database Plus 理念,為傳統數據庫賦能,構建具備分布式、高安全、可管控等的數據庫增強生態,打造兼具數據庫且貼合實際業務需求的開源分布式數據庫體系。與該分布式數據庫體系搭配使用的分布式 SQL(Distributed SQL)將傳統通過配置文件驅動的分布式數據庫代理端 ShardingSphere-Proxy,變成真正意義上通過 SQL 驅動的“分布式數據庫”。
在 5.0.0-beta 版本中,用戶可一鍵啟動 ShardingSphere-Proxy,並通過 DistSQL 在線動態創建、修改、刪除分布式數據庫表,加密數據庫表,動態注入數據庫實例資源,創建主從輪詢規則,展示全局配置信息,開啟分布式事務,啟動動態遷移分布式庫表作業等功能。
DistSQL 這種數據庫態產品,讓用戶用最規范、標准、熟悉的查詢方式操縱及管理 ShardingSphere 分布式數據庫生態所有數據庫資源及元數據信息。未來我們將通過 DistSQL 打破中間件和數據庫之間的界限,讓開發者真正像使用數據庫一樣原生的使用 ShardingSphere。
全面對接 PostgreSQL 生態
PostgreSQL 是世界領先的開源數據庫,被業界稱為最強大的企業級開源數據庫。PostgreSQL 目前世界排名第四,且於 2017、2018 連續兩年贏得了“年度數據庫”冠軍稱號。
ShardingSphere-JDBC 和 ShardingSphere-Proxy 共同構成 ShardingSphere 的接入端體系。ShardingSphere-Proxy 又包括 MySQL 和 PostgreSQL 兩個協議版本。在 MySQL 協議日益成熟及廣泛采用的同時,ShardingSphere 團隊開始將注意力放在 PostgreSQL 協議。本次發行的版本,特別針對 PostgreSQL 在其 SQL 解析層、SQL 兼容層、協議接入層、權限控制層進行大規模開發及提升。作為本次發布的主打產品,提升后的 ShardingSphere-Proxy PostgreSQL 版本將真正踏上聯動 PostgreSQL 開源生態之路,並在未來將有更多持續提升。
PostgreSQL 作為開源界的明星數據庫產品,ShardingSphere 與 PostgreSQL 的鏈接,將為考慮將 PostgreSQL 分布式化、水平拓展化、安全加密化、細粒度權限控制化的用戶提供更為完善和持續維護的解決方案。
ShardingSphere 可插拔架構
可插拔架構追求各個模塊的相互獨立和互無感知,並且通過一個高靈活度,可插拔和可擴展內核,以疊加的方式將各種功能組合使用。
在 ShardingSphere 中,很多功能實現類的加載方式是通過 SPI(Service Provider Interface)注入的方式完成的。SPI 是一種為了被第三方實現或擴展的 API,它可以用於實現框架擴展或組件替換。
目前,數據分片、讀寫分離、數據加密、影子庫、數據庫發現等功能,以及對 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 與協議的支持,均可通過插件的方式植入 ShardingSphere 中。ShardingSphere 現已提供數十個 SPI 作為系統的擴展點,而且仍在不斷增加中。可插拔架構的完善,使 ShardingSphere 從分庫分表中間件蛻變成為分布式數據庫的生態系統。
ShardingSphere 可插拔與可拓展架構理念,為用戶提供如積木一樣組合式的自定義數據庫解決方案,例如讓傳統關系型數據庫同時具有水平擴展和數據加密的功能,或單獨打造分布式數據庫解決方案。
2. 新功能
全新開放式可觀測能力
為了有效分離可觀測性與主線功能,ShardingSphere 提供了自動化探針,用於方便用戶定制化擴展調用鏈路追蹤(tracing)、性能度量指標(metrics)和日志(log)的埋點。ShardingSphere 內置實現了基於 Opentracing、Jaegar 和 Zipkin 的 tracing 探針和基於 Prometheus 的 metrics 探針,並且提供了默認的日志實現。
3. 增強
增強的分布式查詢能力
跨數據庫實例節點進行 Join 及子查詢一直是令人頭疼的問題。同時使用多數據庫實例,使得業務層面的功能受到數據庫限制,業務研發人員需時刻注意查詢 SQL 的使用范疇。
本次發布的版本實現了增強的分布式查詢的功能,在支持跨數據庫實例進行 Join 及子查詢的同時,通過在 SQL 解析、路由及執行層面的增強及 bug 修復,對 MySQL/PostgreSQL/Oracle/SQLServer 在分布式場景下的 SQL 兼容度實現了大幅度提升。這使得用戶在原有的數據庫實例集群基礎上,通過引入 ShardingSphere,低風險、高效率、零改造地實現從傳統數據庫集群向分布式水平擴展的數據庫集群進行平滑過渡。
目前增強分布式查詢能力仍處於 PoC 階段,性能方面還有較大提升空間,歡迎社區的朋友們一起參與開發。
增強分布式用戶及權限控制
用戶安全及權限控制是數據庫領域較為關注且非常重要的功能之一。在先前 5.0.0-alpha 版本中,ShardingSphere 提供了簡單用戶密碼配置、庫級別的粗粒度權限控制,而在此次即將發行的 beta 版則進一步將該特性進行升級改造。從只能通過配置文件進行用戶和密碼配置,到現在的標准化 SQL 方式進行分布式用戶名、hostname、密碼的在線修改和管理。此外,從原來粗粒度的庫級別權限控制,升級到針對庫、表級別的權限控制。
無論業務場景下使用的是 MySQL 還是 PostgreSQL(未來將支持 openGauss),都可使用原生的數據庫 SQL 方言,在 ShardingSphere 的分布式體系下,進行用戶名、hostname、密碼、庫、表等自由組合權限控制管理。ShardingSphere-Proxy 的代理端接入方式,讓用戶盡可能無縫遷移原有的數據庫權限及用戶體系。
在未來的版本中,ShardingSphere 將提供針對列、視圖層面的權限控制,甚至針對每一行的數據都可進行權限的約束。而針對三方業務系統或用戶特有的安全系統,ShardingSphere 提供與這些系統打通能力,使 ShardingSphere-Proxy 可以連通第三方安全管控體系的同時,提供最標准的數據庫權限管理模式。
目前權限模塊處於開發階段,下個版本將會呈現更加完善的功能。
API 簡化重構能力
ShardingSphere 的可插拔架構為用戶提供豐富的擴展能力,同時為方便使用也內置常用功能。例如分庫分表的分片策略,就預置了哈希分片、時間范圍分片、取模分片等策略;數據安全領域的數據存儲加密,則預置有 AES 、RC4、MD5 加密等策略。同時為進一步簡化操作,通過新增的強大 DistSQL 能力,用戶只需一條 SQL 即可在線動態創建一張分片或加密表。
除預置常用功能外,為滿足更為復雜使用場景,ShardingSphere 也開放相關算法與策略接口,讓用戶可按照自己實際的業務場景,注入更為復雜功能實現。簡單內置與自主開放的並存策略,一直是 ShardingSphere 的架構設計哲學。
4. 其他功能
性能提升:元數據加載優化
由於 ShardingSphere 要幫助用戶屏蔽及管理所有數據庫實例及元數據信息,故在應用啟動時,會出現長時間加載元數據信息的性能問題,特別是在上千台服務器實例情況下,元數據加載慢的問題更為明顯。本次發行的版本,特別針對社區呼聲較高的元數據加載問題進行多次性能調優和架構調整。取代原生的 JDBC 驅動加載方式,改為針對不同數據庫方言,進行並行化的 SQL 查詢方式一次性取出所有元數據信息,從而大幅度提升啟動性能。
使用便捷:新增內置性能測試體系
ShardingSphere 在功能不斷完善、新功能不斷開發的進程中,一直欠缺一套完善、全面的整合 & 性能測試體系,在保證每次提交都能正常編譯的同時,不影響其他模塊,並能觀測到性能的上升及下降趨勢。此外,針對數據分片、數據加密、讀寫分離、分布式管控、權限控制、SQL 支持度等功能進行整合測試保證;對不同數據庫、不同分片或加密策略、不同版本之間的性能進行監控和調優提供基礎保證。
配合本次 beta 版本發布,相關性能測試報表、曲線變化展示也將陸續為社區開發,方便用戶了解 ShardingSphere 的性能變化。此外整套測試體系源碼也將提供給社區,方便用戶自行部署測試,感謝 SphereEx(sphere-ex.com) 公司為社區貢獻整套的性能測試體系。
除了上述列舉的功能外,本次發布還進行了其他方面的功能增強、性能優化、缺陷修復等處理。在后續的系列文章中,我們將會持續為大家帶來 Apache ShardingSphere 5.0.0-beta 的正式發布報道、各個特性及功能的深度技術文章,歡迎鎖定我們的系列更新!
🔗ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere
* 在使用 ShardingSphere 的過程中,如果您發現任何問題,有新的想法、建議,歡迎點擊“鏈接”通過 Apache 郵件列表參與到 ShardingSphere 的社區建設中。
歡迎掃碼關注我們