ShardingJdbc2.X學習總結系列(一):介紹

1.簡介

Sharding-JDBC是噹噹應用框架ddframe中,從關係型數據庫模塊dd-rdb中分離出來的數據庫水平分片框架,實現透明化數據庫分庫分表訪問。          

它直接封裝JDBC協議,可以理解爲增強版的JDBC驅動,舊代碼遷移成本幾乎爲零。          

它定位爲輕量級java框架,使用客戶端直連數據庫,以jar包形式提供服務,無proxy代理層,無需額外部署,無其他依賴,DBA也無  需改變原有的運維方式。

2.特點

可適用於任何基於java的ORM框架,如:JPA、Hibernate、Mybatis、Spring JDBC Template,或直接使用JDBC 。        

可基於任何第三方的數據庫連接池,如:DBCP、C3P0、Durid等。        

理論上可支持任意實現JDBC規範的數據庫。目前支持H2,mysql,Oracle,SQLServer,PostgreSQL。        

分片策略靈活,可支持等號、between、in等多維度分片,也可支持多分片鍵。        

SQL解析功能完善,支持聚合、分組、排序、limit、or等查詢,並支持Binding Table以及笛卡爾積表查詢。        

性能高,單庫查詢QPS爲原生JDBC的99.8%,雙庫查詢QPS比單庫增加94%。

3.架構圖

4.核心概念

LogicTable:數據分片的邏輯表,對於水平拆分的數據庫(表)來說,是同一類表的總稱。如:訂單表拆分爲10張表,分表是t_order0到t_order9,他們的邏輯表名爲t_order。

ActualTable:分片數據中真實存在的物理表:t_order0。

DataNode:數據分片的最小單元,由數據源名稱和數據表組成。如:ds1.torder_0。

DynamicTable:邏輯表和物理表不一定需要在配置規則中靜態配置。如,按照日期分片的場景,物理表的名稱隨着時間的推移會產生變化。

BindingTable:指在任何場景下分片規則均一致的主表和子表。例:訂單表和訂單項表,均按照訂單ID分片,則此兩張表互爲BindingTable關係。BindingTable關係的多表關聯查詢不會出現笛卡爾積關聯,查詢效率將大大提升。

ShardingColumn:分片字段用於將數據庫(表)水平拆分的字段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章