Sharding-JDBC v1.2.1 發布, 增強版JDBC驅動

Sharding-JDBC直接封裝JDBC API,可以理解為增強版的JDBC驅動,舊代碼遷移成本幾乎為零:
- 可適用于任何基于
java的ORM框架,如:JPA,Hibernate,Mybatis,Spring JDBC Template或直接使用JDBC。 - 可基于任何第三方的數據庫連接池,如:
DBCP,C3P0,BoneCP,Druid等。 - 理論上可支持任意實現
JDBC規范的數據庫。雖然目前僅支持MySQL,但已有支持Oracle,SQLServer,DB2等數據庫的計劃。
Sharding-JDBC定位為輕量級java框架,使用客戶端直連數據庫,以jar包形式提供服務,未使用中間層,無需額外部署,無其他依賴,DBA也無需改變原有的運維方式。SQL解析使用Druid解析器,是目前性能最高的SQL解析器。
Sharding-JDBC功能靈活且全面:
- 分片策略靈活,可支持
=,BETWEEN,IN等多維度分片,也可支持多分片鍵共用。 SQL解析功能完善,支持聚合,分組,排序,Limit,OR等查詢,并且支持Binding Table以及笛卡爾積的表查詢。
Sharding-JDBC配置多樣:
- 可支持YAML和Spring命名空間配置
- 靈活多樣的
inline方式
以下是常見的分庫分表產品和Sharding-JDBC的對比:
| 功能 | Cobar | Cobar-client | TDDL | Sharding-JDBC |
|---|---|---|---|---|
| 分庫 | 有 | 有 | 未開源 | 有 |
| 分表 | 無 | 無 | 未開源 | 有 |
| 中間層 | 是 | 否 | 否 | 否 |
| ORM支持 | 任意 | 僅MyBatis | 任意 | 任意 |
| 數據庫支持 | 僅MySQL | 任意 | 任意 | 任意 |
| 異構語言 | 可 | 僅Java | 僅Java | 僅Java |
| 外部依賴 | 無 | 無 | Diamond | 無 |
整體架構圖
更新日志
結構調整
- ISSUE #60 API調整,抽離ShardingDataSource,使用工廠代替
- ISSUE #76 ShardingRule和TableRule調整為Builder模式
- ISSUE #77 ShardingRule和TableRule調整為Builder模式
功能提升
- ISSUE #61 在ShardingValue類中加入邏輯表名
- ISSUE #66 在JDBC層的Statement增加對get/set MaxFieldSize,MaxRows和QueryTimeout的支持
- ISSUE #72 對于select union all形式的批量插入支持
- ISSUE #78 簡化只分庫配置,無需配置邏輯表和真實表對應關系
- ISSUE #80 簡化包含不分片庫表的配置,可指定默認數據源,不分片無需配置TableRule
缺陷修正
- ISSUE #63 ORDER BY與GROUP BY衍生列未添加表名或表別名
- ISSUE #65 解析條件上下文性能提升
- ISSUE #67 分片路由到多表時柔性事務日志無法刪除
- ISSUE #71 路由單分片LIMIT的OFFSET計算錯誤
- ISSUE #75 MemoryTransactionLogStorage重試次數更新并發問題
下載
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

