背景
我们为什么要进行分库分表?
随着业务的发展,ERP系统需求越来越广,系统界面、表结构、业务逻辑越来越复杂,报表查询的逻辑也越发的复杂,随着时间的推移数据量也逐渐飙升
当一张表的数据达到几千万时,查询一次所花的时间会变长。这时候,如果有联合查询的话,可能会卡死在那儿,甚至把系统给拖垮。而分库分表的目的就在于此:减小数据库的负担,提高数据库的效率,缩短查询时间。权衡过多个框架的利弊后,我们最终选择使用Sharding-JDBC来进行分库分表。
Sharding-JDBC简介
Sharding-jdbc定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92标准的数据。
从官网的架构图中,可以看出我们只需要将Sharding-JDBC引入到项目中就好了。
Sharding-JDBC的使用
接下来,以为MagicErp为例,具体说明sharding jdbc的应用