sharding-jdbc使用
Sharding-JDBC是当当应用框架ddframe中,关系型数据库模块dd-rdb中分离出来的数据库水平扩展框架,即透明化数据库分库分表访问。Sharding-JDBC继dubbox和elastic-job之后,是ddframe系列开源的第三个产品。https://github.com/dangdangdotcom/sharding-jdbc 简介Sha
·
Sharding-JDBC
是当当应用框架ddframe
中,关系型数据库模块dd-rdb
中分离出来的数据库水平扩展框架,即透明化数据库分库分表访问。
Sharding-JDBC
继dubbox
和elastic-job
之后,是ddframe
系列开源的第三个产品。
https://github.com/dangdangdotcom/sharding-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 | 无 |
整体架构图
在使用时要注意,默认是对库里的所有表进行分表操作的,若不需分表操作,则采用如下的规则即可
<bean id="siteTableRule" class="com.dangdang.ddframe.rdb.sharding.api.rule.TableRule"> <constructor-arg value="tb_w" index="0"/> <constructor-arg index="1"> <list> <value>tb_we</value> </list> </constructor-arg> <constructor-arg index="2" ref="dataSourceRule"/> </bean>
更多推荐
已为社区贡献2条内容
所有评论(0)