演示项目数据库主从结构,读写分离,主数据库负责写入,从数据库负责读出.数据库设计
- 数据库设计
- PRODUCT_DB 数据库进行水平分库PRODUCT_DB1,PRODUCT_DB2
- 商品信息表进行垂直拆分,商品信息表和商品描述表
- 商品信息表和商品描述表进行水平分表,商品信息表1,商品描述表1,商品信息表2,商品描述表2
- PRODUCT_DB ,STORE_DB 进行业务模块拆分,进行垂直分库
- 拥有公共表地理区域表(地理区域表需要在每个数据库中创建,shardingJDBC会同时维护所有数据库中公共表)
2.具体如何配置Sharding-JDBC
配置数据源,m为主数据库,s为从数据库
m1.s1.m2.s2以此类推(注:m0,s0于上方dataSource.names中一一对应)
3.配置主从关系
(注:m0,s0于上方dataSource.names中一一对应)
4.配置分库,分库配置只针对水平分库
本例中只有PRODUCT_DB进行了水平分库,所以配置的是default-database-strategy
其他方式配置分库策略
tables.逻辑表名.database-strategy
5.分表策略
因store_info 只有一张表,所以直接如下配置就行
ID主键的生成规则,使用雪花片的方式生成
product_descript
algorithm-expression 根据product_info_id进行分片策略
绑定表关系,注绑定表关系是以数组形式配置的
因为product_info和product_descript是将一张表进行的垂直分表,所以两者是以product_info_id字段进行绑定的两者表
为什么要配置绑定关系,防止出现笛卡尔积现象
公共表 配置
region是公共表,通过广播的方式保证数据一致性
主从数据同步
通过mysql自带的binlog方式实现