欢迎光临散文网 会员登陆 & 注册

ShardingSphere-JDBC:数据分片实战篇

2021-08-25 23:03 作者:做架构师不做框架师  | 我要投稿

前言

本文主要是实现了一个基于Java API调用ShardingSphere-JDBC实现数据分片。

数据分片

数据分片是指按照某个维度将存放在单一数据节点中的数据分散地存放在多个数据节点或表中,来达到提升性能瓶颈以及可用性的目的。

数据分片的核心手段就是对关系型数据库进行分库和分表。

创建数据库和数据表

首先我们创建两个库,分别是ds0,ds1,在ds0中创建一个表t_order0,在ds1中创建一个表t_order1。

在表中有三个字段:

  • order_id,订单编号,主键,用于分表策略的键

  • user_id,用户编号,用于分库策略的键

  • remarks,备注

建表语句

CREATE TABLE `t_order0` (  

`order_id` bigint NOT NULL COMMENT '订单号,主键',  

`user_id` bigint NOT NULL COMMENT '用户ID',  

`remarks` varchar(50) COLLATE utf8mb4_german2_ci DEFAULT NULL COMMENT '备注',  

PRIMARY KEY (`order_id`) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 

COLLATE=utf8mb4_german2_ci COMMENT='订单表';


CREATE TABLE `t_order1` (  

`order_id` bigint NOT NULL COMMENT '订单号,主键',  

`user_id` bigint NOT NULL COMMENT '用户ID',  

`remarks` varchar(50) COLLATE utf8mb4_german2_ci DEFAULT NULL COMMENT '备注',  

PRIMARY KEY (`order_id`) 

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_german2_ci COMMENT='订单表';

测试数据

操作步骤

我们利用ShardingSphere-JDBC实现分库分表的操作步骤如下:

  1. 配置真实数据源

  2. 配置t_order表规则

  3. 配置分库策略

  4. 配置分表策略

  5. 配置分片策略

  6. 获取数据源

  7. 执行操作语句

引入Maven依赖

注意:示例代码的数据库连接池为Druid,可根据业务场景更换为其他主流数据库连接池。

规则配置

ShardingSphere-JDBC 的 Java API 通过数据源集合、规则集合以及属性配置组成。以下示例是根据 user_id 取模分库, 且根据 order_id取模分表的 2 库 2 表的配置。

按照我们插入的参数“order_id = 1 & user_id = 1”的条件,我们应该会查到ds1库t_order1的数据,测试数据如下:

结果果然如此,说明我们做的这个小demo是ok的,下一篇文章我会带领大家深入源码,探究ShardingSphere-JDBC是如何做到分库分表的!

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。


ShardingSphere-JDBC:数据分片实战篇的评论 (共 条)

分享到微博请遵守国家法律