分库与分表

Preamble

  • 对RDB数据存储和访问机制的一种补充
  • 针对海量请求的优化:优化sql/索引/字段;读写分离;分库分表
  • rule of thumb: 单表行数 >500万行 或单表容量 >2GB 时,考虑分库分表

拆分方式

垂直拆分

  • 垂直分库:按业务
  • 垂直分表:按业务 / 按列

每个库/表的结构不同,但需要有一列相同用来关联;优点是逻辑清晰,数据维护简单;缺点是某个业务导致单表/库数据量大时,仍有读写压力,还需要考虑对事务的处理。

水平拆分

  • 水平分库/表:取模等方式

每个库/表的结构相同,但数据不同;优点是单表/库的数据量保持在一定水平,保证了性能及稳定性;缺点是数据的再次扩展较难。

中间件方案

  • 应用层依赖类:和应用强耦合,让应用层在基本不改变业务代码的情况下透明地实现分库分表的能力(在客户端就知道指定到那个数据库)。包括Sharding-jdbc等。
  • 中间层代理类:在应用和数据库的连接间搭起一个代理层,应用以标准的MySQL协议来连接代理层,然后代理层负责转发请求到底层的MySQL物理实例。包括Cobar,Mycat等。
使用Spring Boot和ShardingSphere进行水平分库分表的操作需要按照以下步骤进行配置和实现: 1. 添加依赖:在Spring Boot项目的pom.xml文件中添加ShardingSphere相关的依赖,包括sharding-jdbc-spring-boot-starter和sharding-jdbc-core等。 2. 配置数据源:在application.properties(或application.yml)文件中配置数据源信息,包括主库和从库的连接信息。 3. 配置分片规则:在配置文件中指定分片规则,包括分库规则和分表规则。可以使用ShardingSphere提供的多种分片算法,如基于范围、基于哈希或者基于列表等。 4. 配置数据源和分片规则的映射:将数据源和分片规则进行映射,指定哪些数据源应用哪些分片规则。 5. 编写实体类和Mapper接口:根据分表规则,在实体类中定义对应的分片键,并在Mapper接口中编写对应的SQL语句。 6. 运行测试:启动Spring Boot应用程序,执行相关的数据库操作,观察数据是否正确分布到各个库和表中。 需要注意的是,在进行水平分库分表时,需要考虑到数据一致性、事务管理、跨库查询等方面的问题。ShardingSphere提供了相应的解决方案,可以根据具体的需求进行配置和调整。 总结来说,使用Spring Boot和ShardingSphere进行水平分库分表的操作需要进行配置数据源、编写分片规则、映射数据源和分片规则、编写相关的实体类和Mapper接口,并进行测试验证。在实际应用中,还需要考虑到数据一致性和事务管理等方面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值