分库分表重点还是在于数据一致性,主从复制和库表管理底层原理,本质上根据配置文件入不同库,入不同表还是很简单的。
学习链接:https://www.bilibili.com/video/BV1LK411s7RX?p=23&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
分布式数据库中间件
由于数据量不断增大,原始可以使用硬件优化,现在需要增加分库分表
分库分表分为垂直切分和水平切分
1. 垂直切分
1. 垂直分表:同一张表拆分字段存入不同表
2. 垂直分库: 不同业务表存入不同业务的数据库
2. 水平切分
1. 水平分表:可以根据id拆分表数据导不同表中
2. 水平分库:表数据水平存到不同数据库中,避免请求打到同一个库中。不同库中库表结构都是一样的
1. 数据库设计的时候考虑垂直分库、垂直分表
1. 数据量增加,优先考虑缓存、读写分离、索引、数据库硬件、数据库选择等方式解决,实在解决不了了再考虑水平分库分表
但存储几个问题:不同服务器数据库之间如何管理
用于数据分片和读写分离,操作不同数据库的表,并不是分库分表
导入shardingshpere、druid依赖包
把原始spring.datasource删除,使用sharding-datasource的properties配置文件
配置bean的覆盖策略
spring.main.allow-bean-definition-overriding=true
后续就能实现原始代码也能正常CRUD,course_1, course_2的插入和查询采用分片策略进行查询与插入
就是主写从读,从数据库通过读取binlog实时把数据拉取过来
数据库代理端
