使用【ShardingSphere】分库分表

前言

ShardingSphere可以支撑分库分表,刚果商城采用了垂直分库(根据不同业务拆分数据库),因此此文章只演示水平分表。

垂直分库

不同业务拆分为不同的数据库(例如商城业务)

image-20231211153244893

水平分表

分表可以通过将大表拆分为多个小表,减少单表的数据量,从而提高查询性能。好处比较多…

分表命名格式最好为逻辑表_num这个格式,方便后续操作

image-20231211153404183

介绍完基本的概念,开始实践。

ShardingSphere官方文档

接下来重点关注分片算法加密算法

image-20231211153756733

核心依赖

我这里使用的是5.2.0版本

            <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId><version>5.2.0</version></dependency>

配置文件(核心)

spring:shardingsphere:datasource:# 为每个数据源进行配置,有几个配几个ds-0:driver-class-name: com.mysql.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSource#  配置数据源,可以配置多个names: ds-0props:# 打印sql日志方便观察sql-show: truemax-connections-size-per-query: 10rules:encrypt:encryptors:# 自定义加密算法名称customer-user-encryptor:props:# AES 使用的 KEYaes-key-value: ADbisulBtxnnKFoWtype: AEStables:# 指定表相应字段加密算法customer_user:# 加密字段columns:mail:cipher-column: mailencryptor-name: customer-user-encryptorphone:cipher-column: phoneencryptor-name: customer-user-encryptorreceive_address:columns:phone:cipher-column: phoneencryptor-name: customer-user-encryptordetail_address:cipher-column: detail_addressencryptor-name: customer-user-encryptorsharding:sharding-algorithms:# 自定义分片算法名称 哈希取模分片算法 对 16 取余sharding_by_mod:props:sharding-count: 16type: HASH_MOD # hash算法tables:# 不同表配置分片算法customer_user:# 指定真实表表名称 `$->{0..15}` 即 0-15actual-data-nodes: ds-0.customer_user_$->{0..15}table-strategy:standard:sharding-algorithm-name: sharding_by_modsharding-column: id # 分片字段operation_log:actual-data-nodes: ds-0.operation_log_$->{0..15}table-strategy:standard:sharding-algorithm-name: sharding_by_modsharding-column: customer_user_idreceive_address:actual-data-nodes: ds-0.receive_address_$->{0..15}table-strategy:standard:sharding-algorithm-name: sharding_by_modsharding-column: customer_user_id

分片算法

image-20231211160709395

加密算法

image-20231211160759699

代码实践

配置完之后,使用起来就很简单了,只需将实体类指定逻辑表名称,使用起来是无感知的。

image-20231211153100844

测试一下

调用【新增用户】接口。

入参:

image-20231211160300350

执行时,会发现有个逻辑SQL实际SQL,可以看到当前用户通过配置的Hash分片算法,被分配到了customer_user_5表中

image-20231211152125686

image-20231211152322414

image-20231211152408809

同时加密算法也起了作用,phone和mail字段都被加密。

ShardingSphere使用起来就是这么滴简单。

希望这篇文章对大家有帮助,有什么错误可以联系(私信)博主改正。

欢迎大家点赞 + 收藏 + 关注。关注小李不迷路~

详细分库分表内容可以看我这篇博客 MySQL与分布式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年软考高项还是机考吗?附常见问题答疑

2024年软考高项实行机考&#xff08;三科均为机考&#xff0c;综合知识考试时间为上午8:30-11:00&#xff0c;案例论文联考&#xff0c;考试时间为下午14:30-18:00&#xff09;&#xff0c;本文为大家整理了一些机考常见问题&#xff0c;希望对大家有所帮助。 一、软考高项机考…

React Hooks学习指北

一、前言 在当今的前端开发环境中&#xff0c;越来越多的开发者认可了 Hooks 的强大能力&#xff0c;并纷纷加入到 Hooks 的使用大军中&#xff1a; 2019 年 2 月&#xff0c;React 正式发布 v16.8 版本&#xff0c;引入 Hooks 能力&#xff08;最新的 v18 中&#xff0c;还新…

移液器吸头材质选择——PFA吸头在半导体化工行业的应用

PFA吸头是一种高性能移液器配件&#xff0c;这种材料具有优异的耐化学品、耐热和电绝缘性能&#xff0c;使得PFA吸头在应用中表现出色。那么它有哪些特点呢&#xff1f; 首先&#xff0c;PFA吸头具有卓越的耐化学腐蚀性能。无论是酸性溶液、碱性溶液还是有机溶剂&#xff0c;P…

如何用CHAT帮你提高工作效率?

问CHAT&#xff1a;从规范项目管理流程交付&#xff0c;分别对项目信息安全管理&#xff0c;项目预算管理和项目采购管理三个方面提建议 CHAT回复&#xff1a; 项目信息安全管理: 1. 制定详细的信息安全政策&#xff0c;所有参与项目的员工必须遵守&#xff0c;对其中涉及敏感…

wpf TelerikUI使用DragDropManager

首先&#xff0c;我先创建事务对象ApplicationInfo&#xff0c;当暴露出一对属性当例子集合对于构成ListBoxes。这个类在例子中显示如下代码&#xff1a; public class ApplicationInfo { public Double Price { get; set; } public String IconPath { get; set; } public …

亚马逊S3V4验签与MINIO验签区别

1、先看下官方文档 AWS S3V4 DEMO 2、实际调用试试 1&#xff09;代码 // 计算auth// for a simple GET, we have no body so supply the precomputed empty hashMap<String, String> headers new HashMap<String, String>();headers.put("x-amz-content…

0013Java安卓程序设计-ssm酒品移动电商平台app

文章目录 **摘要**目录系统实现5.1 APP端5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析…

Firewalld 防火墙配置

文章目录 Firewalld 防火墙配置1. Firewalld 概述2. 区域名称及策略规则3. Firewalld 配置方法4. Firewalld 参数和命令5. Firewalld 两种模式6. Firewalld 使用 Firewalld 防火墙配置 1. Firewalld 概述 firewalld 是一个动态防火墙管理器&#xff0c;作为 Systemd 管理的防…

【docker】常用命令

启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker 查看docker服务状态 systemctl status docker 设置开机启动docker服务 systemctl enable docker 设置关闭开机启动docker服务 systemctl disable …

数据在内存中的存储(浮点型篇)

1.例子&#xff1a;5.5&#xff1a;内存存储为101.1&#xff0c;十分位百分位依次为2的-1次方&#xff0c;2的-2次方&#xff0c;而使用科学计数法可以改写为1.011*2的2次方 2.国际标准公式&#xff1a;-1的D次方*M*2的E次方&#xff0c;x1负0正 3.M在存储时默认整数部分为1&…

使用Spring Boot和领域驱动设计实现模块化整体

用模块化整体架构编写的代码实际上是什么样的&#xff1f;借助 Spring Boot 和 DDD&#xff0c;我们踏上了编写可维护和可演化代码的旅程。 当谈论模块化整体代码时&#xff0c;我们的目标是以下几点&#xff1a; 应用程序被组织成模块。每个模块解决业务问题的不同部分。模块…

springcloud微服务篇--1.认识微服务

一、服务架构演变。 单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a;架构简单 &#xff0c;部署成本低。 缺点&#xff1a;耦合度高 分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立项…

[idea]idea连接clickhouse23.6.2.18

一、安装驱动 直接在pom.xml加上那个lz4也是必要的不然会报错 <dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.2</version></dependency><dependency><group…

歌唱比赛计分 (8 分)设有10名歌手(编号为1-10)参加歌咏比赛

未采用结构体的解法&#xff0c;通过二维数组解题 #include <stdio.h> void rank(int arr[10][6] ) { int str[4] { 0 }; int a1[6] { 0 }; int k 0; int i 0; int z 0; int j 0; int temp 0; double s1[10][2] { 0 }; dou…

(1)mysql容器化部署

mysql容器化部署&#xff1a; 数据持久化&#xff08;方便数据保存及迁移&#xff09;: 需要持久化两个目录: 创建/mysql (1)mysql配置文件: /mysql/mysql-cnf/my.cnf vim my.cnf [mysqld] pid-file /var/run/mysqld/mysqld.pid socket /var/run/mysqld/…

【51单片机系列】使用74HC595控制数码管显示

使用74HC595结合数码管显示字符。 proteus仿真设计如下&#xff0c;74HC595的输出端连接到动态数码管的位选和静态数码管的段选&#xff0c;动态数码管的段选连接到P0口。这两个数码管都是共阴极的。 静态数码管显示字符0-F&#xff0c;软件设计如下&#xff1a; /*实现功能&a…

Java:SpringBoot获取当前运行的环境activeProfile

代码示例 /*** 启动监听器*/ Component public class AppListener implements ApplicationListener<ApplicationReadyEvent> {Overridepublic void onApplicationEvent(ApplicationReadyEvent event) {// 获取当前的环境&#xff0c;如果是test&#xff0c;则直接返回Co…

redis实际应用实现合集

一、redis实现抢红包的功能&#xff08;set 数据结构&#xff09; 分两种情况&#xff1a; 情况一: 从10个观众中随机抽2名幸运观众 首先需要把10个观众的id&#xff08;具体是什么id可以根据实际业务情况自己定义&#xff09;放到redis 的 set 集合里 然后随机抽取2名幸运…

【hcie-cloud】【8】华为云Stack_LLD设计【部署设计、资源设计、服务设计、学习推荐、缩略语】【下】

设计概览、整体架构设计、网络设计 看下面-这篇文章 【hcie-cloud】【7】华为云Stack_LLD设计【设计概览、整体架构设计、网络设计、部署设计、资源设计、服务设计】【上】 部署设计 云平台整体部署架构 图中在Region下每个灰底都代表一个数据中心&#xff0c;AZ1可以跨数据…