當當開源sharding-jdbc,輕量級數據庫分庫分表中間件
近期,當當開源了數據庫分庫分表中間件 sharding-jdbc 。
Sharding-JDBC是當當應用框架ddframe中,從關系型數據庫模塊dd-rdb中分離出來的數據庫水平分片框架,實現透明化數據庫分庫分表訪問。Sharding-JDBC是繼dubbox和elastic-job之后,ddframe系列開源的第3個項目。
Sharding-JDBC直接封裝JDBC協議,可以理解為增強版的JDBC驅動,舊代碼遷移成本幾乎為零。
Sharding-JDBC定位為輕量級java框架,使用客戶端直連數據庫,以jar包形式提供服務,無proxy代理層,無需額外部署,無其他依賴,DBA也無需改變原有的運維方式。
主要包括以下特點:
- 可適用于任何基于java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
- 可基于任何第三方的數據庫連接池,如:DBCP, C3P0, BoneCP, Druid等。
- 理論上可支持任意實現JDBC規范的數據庫。雖然目前僅支持MySQL,但已有支持Oracle,SQLServer等數據庫的計劃。
- 分片策略靈活,可支持等號,between,in等多維度分片,也可支持多分片鍵。
- SQL解析功能完善,支持聚合,分組,排序,limit,or等查詢,并支持Binding Table以及笛卡爾積表查詢。
- 性能高。單庫查詢QPS為原生JDBC的99.8%;雙庫查詢QPS比單庫增加94%。
架構圖
與常見開源產品對比這里僅列出目前停止更新,但仍然在數據庫分片領域非常有影響力的幾個項目。
功能 | Cobar | Cobar-client | TDDL | Sharding-JDBC |
分庫 | 有 | 有 | 未開源 | 有 |
分表 | 無 | 無 | 未開源 | 有 |
中間層 | 是 | 否 | 否 | 否 |
ORM支持 | 任意 | 僅MyBatis | 任意 | 任意 |
數據庫支持 | 僅MySQL | 任意 | 任意 | 任意 |
異構語言 | 可 | 僅Java | 僅Java | 僅Java |
外部依賴 | 無 | 無 | Diamond | 無 |
Sharding-JDBC嚴格遵循Apache 2.0許可證的要求。測試覆蓋率95%,目前已部署至maven中央倉庫。可使用以下坐標引用:
<groupId>com.dangdang</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>1.0.0</version>
Sharding-JDBC將保持持續更新,后續會完善讀寫分離、柔性分布式事務和高可用等相關功能。
感謝郭蕾對本文的審校。
給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號: InfoQChina )關注我們,并與我們的編輯和其他讀者朋友交流(歡迎加入InfoQ讀者交流群 (已滿),InfoQ讀者交流群(#2)
)。
來自: http://www.infoq.com/cn/news/2016/01/sharding-jdbc-dangdang
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!