使用【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.pswp.cn/news/215656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215656.shtml
英文地址,請注明出處:http://en.pswp.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可以跨數據…