前段时间公司要开发一套企业级的Saas系统,为了方便部署和迁移因此每个企业的数据库是独立的,数据库之间没有关联。库以及表动态创建的,只有用户注册后才会动态创建。
该功能实现起来比较简单,因为数据库是独立的,因此不需要考虑事务问题、跨库查询等分库分表的常见问题。但是因为因为云端部署多个数据库成本很高并且会造资源浪费,因此采用的是逻辑分库的方式及创建多个schema的方式进行分库。
我们目前使用的开发架构是springboot+mybatis,但是mybatis无法满足动态schema的需求,因此改用Springboot+SpringJDBC的方式。
主要的依赖如下:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
JdbcTemplate本身并不支持动态设置schema的功能,因此需要重新改造JdbcTemplate使其支持逻辑sc