对Sharding-JDBC的研究学习
Posted 懂一点架构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Sharding-JDBC的研究学习相关的知识,希望对你有一定的参考价值。
准备
中文文档:http://shardingjdbc.io/index_zh.html
引入Maven依赖
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>1.5.0</version>
</dependency>
为何选用1.5.0这个版本?答:据官方介绍,1.5.0版本是一次里程牌式的升级,对代码做了大量的重构工作,并提供了全新SQL解析引擎等。
截止目前,sharing-jdbc已经是2.x版本,需要1.x版本需要到https://github.com/shardingjdbc/sharding-jdbc/tree/${tag}查找。其中,example在https://github.com/shardingjdbc/sharding-jdbc/tree/${tag}/sharding-jdbc-example。
我们来看1.5.0版本的example:
https://github.com/shardingjdbc/sharding-jdbc/tree/1.5.0/sharding-jdbc-example。
架构设计
兼容扩展性
1,可适用于任何基于java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
2,可基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid等。
3,理论上可支持任意实现JDBC规范的数据库。目前支持mysql,Oracle,SQLServer和PostgreSQL。
源码阅读(基于 Sharding-JDBC 1.5.0 版本)
芋道源码:http://www.iocoder.cn/categories/Sharding-JDBC/
总结
对比TSharding(开源):想了下,还是直接推荐使用sharding-jdbc吧!
对比Raptor(蘑菇街分库分表组件,未开源):
1,都适用于任何基于java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template等;
2,Raptor基于Druid数据库连接池实现;而sharding-jdbc可基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid等。
3,理论上都支持任意实现JDBC规范的数据库,如:MySQL,Oracle,SQLServer。
自研改进:
1,开源的sharding-jdbc将所有的配置都放在客户端,可考虑使用统一配置中心来管理。
2,sharding-jdbc的分片规则是数据库和数据表分别进行分片,考虑使用统一路由会简单些。
举例:假设有4个库,256个表,则00库中包含000~063表,01库中包含064~127表,02库中包含128~191表,03库中包含192~255表
① 选择查询数据库的规则 dbRule: db + userId / 64 % 4。
② 选择查询table的规则 tbRule: table + userId % 256。
以上是关于对Sharding-JDBC的研究学习的主要内容,如果未能解决你的问题,请参考以下文章