当前位置:   article > 正文

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

sharding 查询不走自定义分片规则

一文快速入门分库分表中间件 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(

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/756667
推荐阅读
相关标签
  

闽ICP备14008679号