背景
随着项目运行时间逐渐增加,数据库中的数据也越来越多,虽然加索引,优化查询,但是数据量太大,还是会影响查询效率,也给数据库增加了负载。
再加上冷数据基本不使用的场景,决定采用分表来处理数据,从而来提高系统性能。
sharding jdbc 介绍
官方文档在这里。
Sharding-jdbc 定位是轻量级的java框架,在java 的JDBC层提供额外功能。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
- 适用于任何基于 java 的ORM 框架(JPA,Hibernate,mybatis 等)
- 基于任何第三方的数据库连接池(DBCP,c3p0, druid, hikariCP 等)
- 支持任意实现JDBC规范的数据库(目前支持MySQL,Oracle,SQLServer和PostgreSQL)---因为SQL 语法不同,有对应的解析
方案选择
文档很全,并且有三款产品的说明,分别是:Sharding jdbc 、Sharding-proxy、Sharding-sidecar(研发中)
本着想学技术,先实践写demo的原则,直接跳过SQL,解析引擎,路由、改写、归并引擎等说明,直接到配置界面。
配置的方式有很多种:
- java 配置
- SpringBoot 配置
- yaml 配置
- Spring 命名空间配置
配置好之后,直接传入一个 分片算法即可。
// 配置数据源
DataSource getShardingDataSource() throws SQLException {
ShardingRuleConfigur