Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表访问。Sharding-JDBC是继dubbox和elastic-job之后,ddframe系列开源的第3个项目。 
Sharding-JDBC直接封装JDBC协议,可以理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。 
Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式。

主要包括以下特点:

  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%。

架构图

与常见开源产品对比 
这里仅列出目前停止更新,但仍然在数据库分片领域非常有影响力的几个项目。

功能 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

最新文章

  1. PHP练习题
  2. 35.两链表的第一个公共结点[Find the first common node of two linked list]
  3. Android 获取渠道名称
  4. 利用scale9sprite制作动态聊天背景
  5. saiku源代码安装
  6. 【poj2724】 Purifying Machine
  7. Java Properties类
  8. Codeforces Round #333 (Div. 2) B. Approximating a Constant Range st 二分
  9. sql 统计用的sql
  10. Js与flash交互:在html页面中用js与MyReport插件交互
  11. 如何为linux释放内存和缓存
  12. AFM论文精读
  13. Lavarel Route::resource
  14. jenkins 构建完毕后接着构建另外一个构建的方法
  15. update_db_inputs.conf
  16. Redmine发布新闻,自动发送邮件功能失效恢复
  17. golang json 编码解码
  18. 【原创】Dynamics CRM 2015/2016,以PDF的形式打开SSRS报表。
  19. iOS: 向Github的README.md里添加图片
  20. Arp内网毒化

热门文章

  1. ubuntu上安装jdk
  2. 一个Redis实例适合存储不同应用程序的数据吗?
  3. 品优购商城项目(二)mybatis分页插件
  4. realsense d435i問題太多了
  5. Docker容器(一)——Docker的介绍与部署
  6. iOS 给view,button,text filed,label等添加边框和颜色
  7. Spring AOP无法拦截Controller
  8. 把总数amount拆分以标准差最小的标准,平均拆分成count个整数
  9. elasticsearch5.0.1集群索引分片丢失的处理
  10. logstash kafka output 日志处理