Sharding-JDBC配置解读

本文详细介绍了数据库分片的原理和实践,包括分片策略、分片键选择以及配置示例。同时,讨论了分布式全局唯一ID的几种生成方案,如UUID、Twitter的Snowflake算法等,为大数据量场景下的数据库设计提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念

大概分表数据量需要达到800万-1000万

阿里规范说:500万以上就需要分表

表区分:

真实表:数据库真实存在的表,也是可以作为分表的表

逻辑表:查询分表的结果集

绑定表:比如任务和任务详情,关联信息都在同一个数据库内

广播表:字典表,多个数据源内表内容一致

分布式全局唯一ID:

UUID

Redis Increment

Zookeeper 分布式锁

Twitter的Snowflake(雪花算法)  

  

           64 bit 的 long 型的数字  ,其中 1 个 bit 是不用的默认0,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机房+机器 id,12 bit 作为序列号

Ticket Server(数据库生成方式,Flickr采用这个方式)

具体可以参考这个文章说明:https://www.cnblogs.com/Tiancheng-Duan/p/10962704.html

分片策略:

1. 标准策略

2. 复合策略

3. 行表达式策略

4. hint策略

5. 不分片策略

分片算法

  标准

  范围

  复合

  hint  

分片键

2.配置文件配置内容:

数据源配置:

配置数据源ds0,ds1 2个库

分别配置数据库的连接信息

# 数据源配置
sharding.jdbc.datasource.names=ds0,ds1

sharding.jdbc.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds0.url=jdbc:mysql://localhost:3306/ds0
sharding.jdbc.datasource.ds0.username=root
sharding.jdbc.datasource.ds0.password=123456

sharding.jdbc.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1
sharding.jdbc.datasource.ds1.username=root
sharding.jdbc.datasource.ds1.password=123456

 

分库配置:

sharding.jdbc.config.sharding.default-database-strategy.inline.sharding-column=user_id
sharding.jdbc.config.sharding.default-database-strategy.inline.algorithm-expression=ds$->{user_id % 2}
sharding.jdbc.config.sharding.binding-tables=t_order,t_order_item

分表配置:

分表可以通过2种方式
1.配置方式

2.自定义class文件配置

# t_order分表配置
sharding.jdbc.config.sharding.tables.t_order.actual-data-nodes=ds$->{0..1}.t_order$->{0..1}
# 分片键配置
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.sharding-column=order_id
sharding.jdbc.config.sharding.tables.t_order.table-strategy.inline.algorithm-expression=t_order$->{order_id % 2}
#sharding.jdbc.config.sharding.tables.t_order.key-generator-class-name=io.shardingsphere.core.keygen.DefaultKeyGenerator
#sharding.jdbc.config.sharding.tables.t_order.key-generator-column-name=id

绑定表配置:

 

广播表配置:

# 广播表
sharding.jdbc.config.sharding.broadcast-tables=t_province

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值