基于Spring Boot 3.0、ShardingSphere、PostgreSQL或达梦数据库的分库分表

要实现基于Spring Boot 3.0、ShardingSphere、PostgreSQL或达梦数据库的分库分表,首先需要对ShardingSphere进行一些基本配置。你提到的溯源码、批次号等数据需要考虑到跨年数据的存储,因此要设计一个能够动态扩展的分表策略

  1. 添加ShardingSphere依赖
    在pom.xml中添加ShardingSphere的相关依赖:
<dependencies><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId><version>5.0.0</version></dependency><!-- MyBatis-Plus依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>
</dependencies>
  1. ShardingSphere 配置
    ShardingSphere的分库分表策略可以通过配置文件application.yml来设置。这里给出一个分库分表的基本配置示例:
spring:datasource:url: jdbc:postgresql://localhost:5432/yourdbusername: your_usernamepassword: your_passworddriver-class-name: org.postgresql.Driverhikari:maximum-pool-size: 10shardingsphere:datasource:names: ds0, ds1ds0:url: jdbc:postgresql://localhost:5432/db0username: your_usernamepassword: your_passwordds1:url: jdbc:postgresql://localhost:5432/db1username: your_usernamepassword: your_passwordsharding:tables:your_table:actualDataNodes: ds${0..1}.your_table_${0..3}tableStrategy:inline:shardingColumn: batch_numberalgorithmExpression: your_table_${batch_number % 4}defaultDatabaseStrategy:inline:shardingColumn: yearalgorithmExpression: ds${year % 2}

这个配置定义了两个数据库(ds0 和 ds1),并且为your_table配置了基于batch_number的分表策略。同时,还设置了按year分库的策略,这样可以考虑跨年数据的分布。

  1. 分表策略设计
    考虑到你的溯源码和批次号是跨年存储的,因此,分表策略可以基于时间(如年份)或者批次号来做。对于跨年数据,你可以在分库策略中动态判断年份,并将数据根据年份分配到不同的数据库。actualDataNodes配置项中的dsKaTeX parse error: Expected group after '_' at position 18: …..1}和your_table_̲{0…3}表示将数据分布到多个数据库和表中。

动态分表:可以根据batch_number来决定表名。例如,使用batch_number % 4来决定数据存储在哪四个表中。

跨年分库:使用year % 2来决定数据存储在哪两个库中。你可以根据业务需求调整这个比例。

  1. MyBatis-Plus 配置
    MyBatis-Plus需要配合ShardingSphere的配置使用,可以通过@Mapper注解来创建MyBatis映射接口,并通过@TableName来指定表名。在Spring Boot中,ShardingSphere会自动处理分库分表的逻辑。
@Mapper
public interface YourTableMapper extends BaseMapper<YourTable> {
}
  1. 数据模型
    你的数据模型需要确保字段与分表策略匹配。例如,batch_number字段可以作为分表的依据,year字段可以用于分库策略。
@Data
@TableName("your_table")
public class YourTable {private Long id;private String batchNumber;private String year;// 其他字段
}
  1. 测试和调试
    在开发初期,你需要对ShardingSphere的分库分表策略进行充分的测试,确保数据能够按照预期分布到不同的库和表中,且不会出现数据丢失或跨年数据存储错误的情况。

总结
使用ShardingSphere的actualDataNodes配置来实现跨年数据的动态分库分表。

通过ShardingSphere的inline策略,动态计算分库和分表的规则。

官方案例地址:https://shardingsphere.apache.org/document/5.5.0/cn/quick-start/shardingsphere-jdbc-quick-start/

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

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

相关文章

位运算的应用

1. 判断偶数&#xff0c;判断最低位是0还是1即可&#xff0c;⽐求模快 x % 2 ! 0 //x正负都可以判断&#xff1b;不⽤x%2 1&#xff0c;因为如果x为负奇数&#xff0c;x%2-1 (x & 0x1) 0 例如&#xff1a; int x; int main() { cin>>x; if((x & 0x1)0) cout<…

FOC算法开环控制基础

1. 为什么要有FOC算法 先看看从有刷电机到无刷电机的简单介绍&#xff0c;如下图1&#xff0c;通电螺线圈会产生磁场&#xff0c;这个磁场会产生N级和S级&#xff0c;然后这个电磁铁就可以吸引永磁体&#xff0c;S级吸引N级&#xff0c;N级吸引S级&#xff0c;通俗的来说&…

【计算机网络】HTTP中GET和POST的区别是什么?

从以下几个方面去说明&#xff1a; 1.定义 2.参数传递方式 3.安全性 4.幂等性 1.定义&#xff1a; GET&#xff1a; 获取资源&#xff0c;通常请求数据而不改变服务器的状态。POST&#xff1a; 提交数据到服务器&#xff0c;通常会改变服务器的状态或副作用(如创建或更新资源…

7400MB/s5050TBW完美结合,全新希捷酷玩530R SSD体验评测

7400MB/s&5050TBW完美结合&#xff0c;全新希捷酷玩530R SSD体验评测 哈喽小伙伴们好&#xff0c;我是Stark-C~ 说到希捷酷玩530 SSD&#xff0c;很多硬核进阶玩家应该都知道&#xff0c;或者说正在使用&#xff08;比如说我~&#xff09;。 作为希捷大厂旗下高性能SSD的…

(undone) MIT6.S081 2023 学习笔记 (Day11: LAB10 mmap)

url: https://pdos.csail.mit.edu/6.1810/2023/labs/mmap.html mmap和munmap系统调用允许UNIX程序对其地址空间进行精细控制。它们可用于进程间共享内存、将文件映射到进程地址空间&#xff0c;并作为用户级页面错误处理方案的一部分&#xff0c;例如课程中讨论的垃圾回收算法。…

Q_OBJECT宏的作用

Qt 中&#xff0c;如果一个类中定义了信号&#xff08;signals&#xff09;或槽&#xff08;slots&#xff09;&#xff0c;那么这个类必须包含 Q_OBJECT 宏。 Q_OBJECT宏是 Qt 元对象系统的核心部分&#xff0c;它使得信号和槽机制能够正常工作。 Q_OBJECT宏是 Qt 的元对象系统…

信息安全基石:加解密技术的原理、应用与未来

信息加解密技术是信息安全领域的核心技术之一&#xff0c;以下为你详细介绍&#xff1a; 一、加密技术 1.定义&#xff1a;加密是通过特定的算法和密钥&#xff0c;将原始的明文信息转化为看似无意义的密文信息的过程。这一过程使得信息在传输、存储等过程中&#xff0c;即使…

LeetCode:返回倒数第k个结点

1、题目描述 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&#xff1a;本题相对原题稍作改动 示例&#xff1a; 输入&#xff1a; 1->2->3->4->5 和 k 2 输出&#xff1a; 4 说明&#xff1a; 给定的 k 保证是有效的。 2、…

R004 -计算机硬件基础

目录 1.数据表示&计算机网络组成 2.计算机网络分类 3.冯诺依曼体系结构 4.指令系统基础 5.指令系统类型 6.流水线技术 流水线周期 &#xff1a;各流水段中&#xff0c;执行时间最长的那一段。就是T 流水线时间&#xff1a;t 1t2t 3 (n-1) * T 7.流水线指标 8.存储系…

Mybatis学习(下)

目录 1. 动态sql的应用 1.2 1.2 1.3 、 、 标签 1.4 1. 动态sql的应用 使用Mybatis框架时, 对于sql数据的操作量比较大的时候, 看着会觉得很乱, 可能写着写着就乱了, 或者说回过头来发现sql语句写错了, 很麻烦, 所以动态sql就可以让我们用Java代码, 替换部分sql语句 1.2 &l…

iview 老版本合并单元格

新版的iview中已经支持了合并单元格了&#xff0c;我的版本比较老&#xff0c;为&#xff1a;"iview": "^3.5.2"。暂不支持。记录一下别的大佬的方法。感觉思路比较活&#xff0c;正在这种思路需要在解决问题的过程中学习。 核心思路&#xff1a;通过rende…

FGMRES(Flexible Generalized Minimal Residual)方法

FGMRES&#xff08;Flexible Generalized Minimal Residual&#xff09;方法是GMRES的变种&#xff0c;主要用于处理变预处理子&#xff08;即每次迭代的预处理子可能不同&#xff09;的情况。与标准GMRES相比&#xff0c;FGMRES通过存储预处理后的向量而非预处理子本身&#x…

自主采集高质量三维重建数据集指南:面向3DGS与NeRF的图像与视频拍摄技巧【2025最新版!!】

一、✨ 引言 随着三维重建技术的飞速发展&#xff0c;NeRF&#xff08;Neural Radiance Fields&#xff09;与 3D Gaussian Splatting&#xff08;3DGS&#xff09;等方法成为重建真实场景和物体几何细节的前沿方案。这些方法在大规模场景建模、机器人感知、文物数字化、工业检…

HarmonyOS Next-DevEco Studio(5.0.2)无网络环境配置(详细教程)

开发者如果电脑处于完全无网环境&#xff0c;可以参考下面文档进行相关配置 DevEco Studio(5.0.2)开发环境一览&#xff1a; 工具版本DevEco Studio5.0.2openHarmonySDK14ohpm5.0.11node.js18.20.1hypium1.0.21 一、下载DevEco Studio&#xff08;5.0.2 Release&#xff09;…

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎样练成的?

接上文MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 探究sleep.c是如何’炼成’的? 老实讲&#xff0c;我不熟悉Makefile&#xff0c;最多写过简单的编译和辅助脚本&#xff0c;拿到Xv6的Makefile是一脸懵的&#xff0c;至今还是一脸懵&#xff0c;那么我们上篇中新加的…

顺序结构双链表的实现

双链表是用最快的时间实现链表的一种方式&#xff0c;具体的实现代码如下&#xff1a; #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>typedef int LTDataType; typedef struct ListNode {LTDataType data;struct ListNode* next;/…

GoFrame 奉孝学习笔记

第一章节 GoFrame 是一款基础设施建设比较完善的模块化框架 GoFrame 是一款基础设施建设比较完善的模块化框架, Web Server 模块是其中比较核心的模块,我们这里将 Web 服务开发作为框架入门的选择,便于大家更容易学习和理解。 用GOland编写代码 go.mod module goframePro…

pinia实现数据持久化插件pinia-plugin-persist-uni

在学习uniapp过程中&#xff0c;看到了pinia-plugin-persist-uni插件&#xff0c;以前面试过程中也有面试过说vuex数据刷新之前的数据就丢失了&#xff0c;之前回答的是把数据存储到数据库或者本地存储。pinia-plugin-persist-uni本质上数据也是本地存储。 1、安装 npm instal…

Git 多账号切换及全局用户名设置不生效问,GIT进行上传无权限问题

解决 Git 多账号切换及全局用户名设置不生效问题 在软件开发过程中&#xff0c;我们经常会使用 Git 进行版本控制。有时&#xff0c;我们需要在同一台机器上管理多个 Git 账号&#xff0c;最近我在进行使用git的时候因为项目要进行上传的不同的git账号&#xff0c;但是通过本地…

基于STM32定时器中断讲解(HAL库)

基于STM32定时器中断讲解&#xff08;HAL库&#xff09; 1、定时器简单介绍 以STM32F103C8T6中几个定时器为例&#xff1a; TIM1&#xff1a;这是一个高级定时器&#xff0c;不仅具备基本的定时中断功能&#xff0c;还拥有内外时钟源选择、输入捕获、输出比较、编码器接口以…