开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
Sharding-JDBC首页、文档和下载 - 轻量级的关系型数据库中间件 - 开源中国社区
全部项目分类
Apache-2.0
Java 查看源码»
跨平台
当当网
亮_dangdang
分享
收藏
572 人收藏
收录时间:2016-01-27
Sharding-JDBC 详细介绍

Sharding-JDBC是一个开源的适用于微服务的分布式数据访问基础类库,它始终以云原生的基础开发套件为目标。

Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式,可理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。

Sharding-JDBC完整的实现了分库分表,读写分离和分布式主键功能,并初步实现了柔性事务。从2016年开源至今,在经历了整体架构的数次精炼以及稳定性打磨后,如今它已积累了足够的底蕴,相信可以成为开发者选择技术组件时的一个参考。

1. 分库分表

  • SQL解析功能完善,支持聚合,分组,排序,LIMIT,TOP等查询,并且支持级联表以及笛卡尔积的表查询
  • 支持内、外连接查询
  • 分片策略灵活,可支持=,BETWEEN,IN等多维度分片,也可支持多分片键共用,以及自定义分片策略
  • 基于Hint的强制分库分表路由

2. 读写分离

  • 一主多从的读写分离配置,可配合分库分表使用
  • 基于Hint的强制主库路由

3. 柔性事务

  • 最大努力送达型事务
  • TCC型事务(TBD)

4. 分布式主键

  • 统一的分布式基于时间序列的ID生成器

5. 兼容性

  • 可适用于任何基于java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC
  • 可基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid等
  • 理论上可支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL

6. 灵活多样的配置

  • Java
  • YAML
  • Inline表达式
  • Spring命名空间
  • Spring boot starter

7. 分布式治理能力 (2.0新功能)

  • 配置集中化与动态化,可支持数据源、表与分片策略的动态切换(2.0.0.M1)
  • 客户端的数据库治理,数据源失效自动切换(2.0.0.M2)
  • 基于Open Tracing协议的APM信息输出(2.0.0.M3)

架构图

Sharding-JDBC

选择将代码托管在码云
你还在等什么

可能是中国最大最好的代码托管平台


大家对 Sharding-JDBC 的评论 (全部 20 条评论)
{{repayCom.userName}}
亮_dangdang
编译不通过的是lombok的问题。
这里无法回答问题,有问题的同学可以提问
qinbo
sharding-jdbc和好的解决了分库分表的问题,并且支持大部分的sql已完全够用。而且比较灵活,有分表策略配置和分裤策略配置,开发文档也将的非常详细,清楚,并提供了demo,简单易用且实用性很好,大赞!!!--杭州开发
a280131919
有一个这样的sql
SELECT
    count(1)
    FROM sds where id in (select id from gtgt)
sds和gtgt都配置了rule规则,但是gtgt的不会生效,我看了下代码,是因为ParseContext的mergeCurrentConditionContext没有把subParseContext的同步合并,请问这个是因为什么?
George2017
你好,是否支持聚合函数操作,比如SUM(`score`)/COUNT(`id`)
fengjian
数据库扩容后,怎么迁移
Sharding-JDBC 相关博客
顶部