mysql sharding 选型_sharding-jdbc 分库分表的 4种分片策略,还蛮简单的

本文详细介绍了如何使用Sharding-JDBC实现分库分表,包括标准分片策略(精准和范围)、复合分片策略、行表达式分片策略和Hint分片策略。通过自定义算法和配置,展示了在不同场景下如何应用这些策略,并给出了实例代码和配置示例。
摘要由CSDN通过智能技术生成

一文快速入门分库分表中间件 Sharding-JDBC (必修课)​mp.weixin.qq.combb0b19fa44ccb2220d6240de1c2f5671.png

上文中介绍了 sharding-jdbc 的基础概念,还搭建了一个简单的数据分片案例,但实际开发场景中要远比这复杂的多,我们会按 SQL 中会出现的不同操作符 >、

往下开展前先做个答疑,前两天有个小伙伴私下问了个问题说:如果我一部分表做了分库分表,另一部分未做分库分表的表怎么处理?怎么才能正常访问?

这是一个比较典型的问题,我们知道分库分表是针对某些数据量持续大幅增长的表,比如用户表、订单表等,而不是一刀切将全部表都做分片。那么不分片的表和分片的表如何划分,一般有两种解决方案。严格划分功能库,分片的库与不分片的库剥离开,业务代码中按需切换数据源访问

设置默认数据源,以 Sharding-JDBC 为例,不给未分片表设置分片规则,它们就不会执行,因为找不到路由规则,这时我们设置一个默认数据源,在找不到规则时一律访问默认库。

# 配置数据源 ds-0

spring.shardingsphere.datasource.ds-0.type=com.alibaba.druid.pool.DruidDataSource

spring.shardingsphere.datasource.ds-0.driverClassName=com.mysql.jdbc.Driver

spring.shardingsphere.datasource.ds-0.url=jdbc:mysql://47.94.6.5:3306/ds-0?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&useSSL=false&serverTimezone=GMT

spring.shardingsphere.datasource.ds-0.username=root

spring.shardingsphere.datasource.ds-0.password=root

# 默认数据源,未分片的表默认执行库

spring.shardingsphere.sharding.default-data-source-name=ds-0

这篇我们针对具体的SQL使用场景,实践一下4种分片策略的用法,开始前先做点准备工作。标准分片策略

复合分片策略

行表达式分片策略

Hint分片策略

准备工作

先创建两个数据库 ds-0、ds-1,两个库中分别建表 t_order_0、t_order_1、t_order_2 、t_order_item_0、t_order_item_1、t_order_item_2 6张表,下边实操看看如何在不同场景下应用 sharding-jdbc 的 4种分片策略。

t_order_n 表结构如下:

CREATE TABLE `t_order_0` (

`order_id` bigint(200) NOT NULL,

`order_no` varchar(100) DEFAULT NULL,

`user_id` bigint(200) NOT NULL,

`create_name` varchar(50) DEFAULT NULL,

`price` decimal(10,2) DEFAULT NULL,

PRIMARY KEY (`order_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

t_order_item_n 表结构如下:

CREATE TABLE `t_order_item_0` (

`item_id` bigint(100) NOT NULL,

`order_id` bigint(200) NOT NULL,

`order_no` varchar(200) NOT NULL,

`item_name` varchar(50) DEFAULT NULL,

`price` decimal(10,2) DEFAULT NULL,

PRIMARY KEY (`item_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

分片策略分为分表策略和分库策略,它们实现分片算法的方式基本相同,不同是一个对库ds-0、ds-1,一个对表 t_order_0 ··· t_order_n 等做处理。

标准分片策略

使用场景:SQL 语句中有>,>=, <=,

标准分片策略(StandardShardingStrategy),它只支持对单个分片健(字段)为依据的分库分表,并提供了两种分片算法 PreciseShardingAlgorithm(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值