前言
Sharding-JDBC 作为当前主流的分库分表组件, 虽然已经有很多现成代码可以copy,但是我们还是要了解一下为啥要这么配置,以及具体运行大致流程,废话不多说,学前先介绍一下使用场景。
- 数据库水平扩展:当单个数据库无法满足高并发和大数据量的需求时,可以通过分库分表来水平扩展数据库。Sharding-JDBC可以帮助将数据分散存储在多个数据库中,提高数据库的扩展性和性能
- 高可用性和容灾:通过将数据复制到不同的数据库节点,可以提供高可用性和容灾能力。当一个节点出现故障时,可以切换到备用节点上继续提供服务
- 多租户系统:在多租户系统中,不同的租户数据需要被隔离存储。通过使用Sharding-JDBC,可以将不同租户的数据分散存储在不同的数据库中,保证数据的安全性和隔离性。
- 数据分析和报表系统:在数据分析和报表系统中,大量的数据需要进行查询和统计分析。通过将数据分片存储在多个数据库中,可以提高查询和分析的性能。
- 业务隔离和解耦:在大型系统中,不同的业务模块可能需要独立的数据库。通过使用Sharding-JDBC,可以将不同业务模块的数据分散存储在不同的数据库中,实现业务的隔离和解耦。
需要注意的是,使用Sharding-JDBC进行分库分表需要仔细规划和设计,包括数据切分策略、数据迁移、数据一致性等方面的考虑。在选择和使用Sharding-JDBC时,需要根据具体业务需求和场景进行评估和决策。
1. JDBC 到 Sharding-JDBC
相信很多初学java的同学对这个并不陌生,我们知道 JDBC 是一种 Java 语言访问关系型数据库的规范,其设计初衷就是要提供一套用于各种数据库的统一标准,不同厂家共同遵守这套标准,并提供各自的实现方案供应用程序调用。
- 创建DataSource -》 2.获取Connection -》3. 构建Statement -》 4. 执行SQL-》5.处理ResultSte结果集
DataSource 接口核心
public interface DataSource extends CommonDataSource, Wrapper {
/**
* <p>Attempts to establish a connection with the data source that
* this {@code DataSource} object represents.
* @return a connection to the data source
*/
Connection getConnection() throws SQLException;
/**
* <p>Attempts to establish a connection with the data source that
* this {@code DataSource} object represents.
* @param username the database user on whose behalf the connection is
* being made
* @param password the user's password
*/
Connection getConnection