DistSQL:像資料庫一樣使用 Apache ShardingSphere
Apache ShardingSphere 5.0.0-beta 深度解析的第一篇文章和大家一起重溫了 ShardingSphere 的 核心原理,並詳細闡述了此版本在核心層面,特別是 SQL 能力方面的最佳化和提升。強大穩定的核心是 ShardingSphere 持續發展的基礎,與此同時,ShardingSphere 在研發分散式資料庫生態特性上也在努力摸索。本次 5.0.0-beta 版本釋出的 DistSQL,用於搭配整個 ShardingSphere 分散式資料庫體系,在提供更標準化的分散式資料庫管理方式的同時,兼具靈活、便捷和優雅的特性。
本文將帶領大家全面認識 DistSQL,並結合實戰案例展示如何使用 DistSQL 一鍵管理 ShardingSphere 分散式資料庫服務。
孟浩然
SphereEx 高階 Java 工程師
Apache ShardingSphere Committer
曾就職於京東科技,負責資料庫產品研發,熱愛開源,關注資料庫生態,目前專注於 ShardingSphere 資料庫中介軟體開發以及開源社群建設。
初識 DistSQL
相信大家對 SQL(Structured Query Language)都不陌生,SQL 是一種資料查詢和程式設計語言,同時作為關聯式資料庫管理系統的標準語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統。
和標準 SQL 類似,DistSQL(Distributed SQL),即分散式 SQL,是 ShardingSphere 特有的一種內建 SQL 語言,能夠提供標準 SQL 之外的增量功能操作能力。 藉助於 ShardingSphere 強大的 SQL 解析引擎,DistSQL 提供了類似於標準 SQL 的語法結構和語法校驗體系,在保證規範化的同時,也讓 DistSQL 更加靈活。
ShardingSphere 提出的 Database Plus 理念,旨在打造兼具資料庫且貼合實際業務需求的開源分散式資料庫體系,而 DistSQL 正是在傳統資料庫上層構建,提供既貼合標準又擁有 ShardingSphere 功能特色的 SQL 能力,能更好的為傳統資料庫賦能。
DistSQL 設計初衷
ShardingSphere 快速發展的幾年來,隨著核心的逐步穩定,以及對核心功能的持續打磨,在資料庫中介軟體領域,已然獨樹一幟。作為國內開源的佼佼者, ShardingSphere 在分散式資料庫生態的探索中並沒有停止腳步, 打破中介軟體和資料庫之間的界限,讓開發者像使用資料庫一樣使用 Apache ShardingSphere,是 DistSQL 的設計目標,也是 ShardingSphere 從面向開發人員的框架和中介軟體轉變為面向運維人員的基礎設施產品不可或缺的能力。
DistSQL 語法體系
DistSQL 在設計之初,就以面向標準為目標,充分考慮資料庫開發和運維人員的使用習慣,所以 DistSQL 的語法全面借鑑標準 SQL 語言,兼顧可讀性和易用性的同時,最大程度保留 ShardingSphere 自身的特性,併為使用者提供最寬泛的自定義邊界,以應對不同的業務場景。對於熟悉 SQL 和 ShardingSphere 的開發者,可以快速入手。
標準的 SQL 提供瞭如 DQL、DDL、DML、DCL 等不同型別的語法,用於定義不同功能的 SQL 語句,DistSQL 也定義了一套自己的語法體系。
在 ShardingSphere 中, DistSQL 的語法目前主要劃分為 RDL、RQL 和 RAL 三種型別:
RDL(Resource & Rule Definition Language):資源規則定義語言,用於資源和規則的建立、修改和刪除;
RQL(Resource & Rule Query Language):資源規則查詢語言,用於資源和規則的查詢和展現;
RAL(Resource & Rule Administrate Language):資源規則管理語言,用於 Hint、事務型別切換、分片執行計劃查詢等增量功能操作。
DistSQL 的語法體系為 ShardingSphere 邁向分散式資料庫搭起了橋樑,目前還在持續完善中,隨著更多的想法被實現,DistSQL 勢必會越來越強大。也歡迎對此感興趣的開發者加入 ShardingSphere,為 DistSQL 提供想法,貢獻程式碼。
瞭解更詳細的語法規則,可參考官方文件: https://shardingsphere.apache.org/document/current/cn/features/dist-sql/syntax/
DistSQL 實戰
在瞭解了 DistSQL 的設計理念和語法體系後,接下來本文以資料分片為例,實戰演示如何透過 DistSQL 來搭建一套基於 ShardingSphere 的資料分片服務。
環境準備
-
啟動 MySQL 服務
-
建立用於分片的 MySQL 資料庫
-
啟動 Zookeeper 服務
-
開啟分散式治理配置並啟動 ShardingSphere-Proxy ( https://shardingsphere.apache.org/document/current/cn/quick-start/shardingsphere-proxy-quick-start/ )
實戰演示
-
使用 MySQL 命令列連線到啟動的 ShardingSphere-Proxy
-
建立並查詢分散式資料庫 sharding_db
-
使用新建立的資料庫
-
執行 RDL 配置 2 個用於分片 的資料來源資源 ds_1 和 ds_2
-
執行 RQL 查詢新增加的資料來源資源
-
執行 RD L 建立 t_order 表的分片規 則
-
執行 RQL 查詢分片規則
RQL 除了支援查詢當前資料庫下的所有分片規則,也可以透過下面的語句查詢單個表的分片規則
SHOW SHARDING TABLE RULE t_order FROM sharding_db
-
建立並查詢 t_order 分片表
-
在 ShardingSphere-Proxy 端成功建立分片表 t_order 後,透過客戶端連線到底層資料庫 ds_1 和 ds_2,ShardingSphere 已經根據 t_order 表的分片規則自動建立了分片表
-
分片表建立完成後,繼續在 ShardingSphere-Proxy 端執行 SQL 語句插入資料
-
透過 RAL 查詢執行計劃
至此,使用 DistSQL 搭建 ShardingSphere 資料分片服務已經完成,對比之前版本以配置檔案驅動的 ShardingSphere 代理端相比,DistSQL 對開發者更友好,對資源和規則的管理更加靈活,以 SQL 驅動的方式,更是實現了 DistSQL 和標準 SQL 的無縫對接。
以上的示例中,僅演示了小部分 DistSQL 語法的使用,除了透過 CREATE 和 SHOW 語句建立和查詢資源、規則,DistSQL 同樣提供了 ALTRE DROP 等更多的操作,且同時支援對資料分片、讀寫分離、資料加密、資料庫發現核心功能的配置管控。
結語
作為 5.0.0-beta 版本釋出的新特性之一,DistSQL 也將從此版本開始持續發力,構建更完善的語法體系,提供更強大的功能。
DistSQL 為 ShardingSphere 在分散式資料庫領域的探索提供了無限可能,在後續的規劃中,DistSQL 將作為紐帶串聯起更多的功能,提供一鍵式操作。如一鍵分析資料庫整體狀態,和彈性遷移對接,提供一鍵資料擴容、縮容;和管控對接,實現一鍵切換主從、改變資料庫狀態等等。
最後,歡迎大家多多關注社群,瞭解 ShardingSphere 專案最新進展。
歡迎關注我們
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70001955/viewspace-2782254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SqlEs-像使用資料庫一樣使用ElasticsearchSQL資料庫Elasticsearch
- 基於 Apache ShardingSphere 構建高可用分散式資料庫Apache分散式資料庫
- Apache ShardingSphere 後設資料載入剖析Apache
- 資料庫也可以像電腦一樣組裝:使用Kafka建立關聯式資料庫 – Robert Yokota資料庫Kafka
- 像物件一樣對待資料物件
- Logtail:像查詢資料庫一樣查詢日誌AI資料庫
- 螞蟻金服資深總監韓鴻源:像使用集中式資料庫一樣使用OceanBase分散式資料庫資料庫分散式
- 如何連線一個像 MSSQL 或者 orcale 一樣的外部資料庫SQL資料庫
- 使用Java 8 Stream像操作SQL一樣處理資料(上)JavaSQL
- 使用Java 8 Stream像操作SQL一樣處理資料(下)JavaSQL
- DistSQL 深度解析:打造動態化的分散式資料庫SQL分散式資料庫
- 如何像資料分析師一樣思考?
- 萬萬沒想到,go的資料庫操作,也能像php一樣溜了Go資料庫PHP
- 像查詢資料庫一樣優雅呼叫人工智慧 API資料庫人工智慧API
- 像 IDE 一樣使用 VimIDE
- Apache ShardingSphere:由開源驅動的分散式資料庫中介軟體生態Apache分散式資料庫
- Python 資料分析:讓你像寫 Sql 語句一樣,使用 Pandas 做資料分析PythonSQL
- 全鏈路線上生產資料庫壓測利器:Apache ShardingSphere 影子庫特性升級資料庫Apache
- 像Event Emitter一樣使用Web WorkerMITWeb
- 像使用水電一樣使用雲端計算
- 故事樣設計——怎樣像使用者一樣思考?
- Apache ShardingSphere 首篇論文被 ICDE 收錄,全球資料庫發展迎來新局面Apache資料庫
- 博文乾貨|Apache InLong 使用 Apache Pulsar 建立資料入庫Apache
- Apache ShardingSphere HINT 實用指南Apache
- 如何使用MySQL資料庫來分析Apache日誌?MySql資料庫Apache
- 在多資料來源中對部分資料表使用shardingsphere進行分庫分表
- ICDE 2022|Apache ShardingSphere:一個功能全面和可插拔的資料分片平臺Apache
- redis實現像關係型資料庫一樣按條件高效查詢分頁Redis資料庫
- 談談如何像對待產品一樣對待資料
- 像使用 Laravel Query 一樣的搜尋 ElasticsearchLaravelElasticsearch
- 從NewSQL的角度看Apache ShardingSphereSQLApache
- 譯 | 像使用一臺主機一樣管理叢集
- 改進 es 搜尋模組,像查詢資料庫一樣查詢 es,附完整小案例資料庫
- 使用 Apache Jakarta POI 從多個資料庫建立一個 Excel 報表Apache資料庫Excel
- 三年沉澱,Apache ShardingSphere 5.0.0 開啟資料應用新篇章Apache
- React-Redux進階(像VUEX一樣使用Redux)ReactReduxVue
- 在另一個資料庫中建立一個與原來資料庫中許可權一樣的使用者資料庫
- 提名 Apache ShardingSphere Committer,說說方法ApacheMIT