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

主要包括如下特色:git

  1. 可適用於任何基於java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
  2. 可基於任何第三方的數據庫鏈接池,如:DBCP, C3P0, BoneCP, Druid等。
  3. 理論上可支持任意實現JDBC規範的數據庫。雖然目前僅支持MySQL,但已有支持Oracle,SQLServer等數據庫的計劃。
  4. 分片策略靈活,可支持等號,between,in等多維度分片,也可支持多分片鍵。
  5. SQL解析功能完善,支持聚合,分組,排序,limit,or等查詢,並支持Binding Table以及笛卡爾積表查詢。
  6. 性能高。單庫查詢QPS爲原生JDBC的99.8%;雙庫查詢QPS比單庫增長94%。

架構圖github

與常見開源產品對比 
這裏僅列出目前中止更新,但仍然在數據庫分片領域很是有影響力的幾個項目。數據庫

功能 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將保持持續更新,後續會完善讀寫分離、柔性分佈式事務和高可用等相關功能。框架

Sharding-JDBC項目GitHub地址:https://github.com/dangdangdotcom/sharding-jdbc運維

相關文章
相關標籤/搜索