Sharding-Jdbc实现分表分库

SpringBoot2.x集成Sharding-JDBC实现分库分表 概述 ShardingSphere,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。定位为轻量级Java框架。其实就是一个增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。内部改写了SQL的添加和查询规则。适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring ... 阅读详情

Sharding-Jdbc实现分表分库

Sharding-Jdbc分表分库
LogicTable
数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称。
订单信息表拆分为2张表,分别是t_order_0、t_order_1,他们的逻辑表名为t_order。
ActualTable
在分片的数据库中真实存在的物理表。即上个示例中的t_order_0、t_order_1。
DataNode
数据分片的最小单元。由数据源名称和数据表组成,例:test_msg0.t_order_0。配置时默认各个分片数据库的表结构均相同,直接配置逻辑表和真实表对应关系即可。
ShardingColumn
分片字段。用于将数据库(表)水平拆分的关键字段。SQL中如果无分片字段,将执行全路由,性能较差。Sharding-JDBC支持多分片字段。
ShardingAlgorithm
分片算法。Sharding-JDBC通过分片算法将数据分片,支持通过等号、BETWEEN和IN分片。分片算法目前需要业务方开发者自行实现,可实现的灵活度非常高。未来Sharding-JDBC也将会实现常用分片算法,如range,hash和tag等。

 

 

在单个库里,有一张表拆分成n多个小表

比如 t_order拆分成 t_order0  t_order_1

 

insert操作时候,会根据id取模分表的总数 获取具体存放的位置 分表后  表名成t_order_0 和 t_order_1

   与表的总数进行取模

   跟前缀拼接起来 t_order-+(id%分表总数)

 

查询时候如何查询? 一样算法获取

  

注意 分表之前,分表的数量定义好了之后,不能改了!!!!

 

 

SpringBoot整合Sharding-Jdbc分为两种方式
一种为原生配置方式,自己需要实现接口。
1.分库算法类需要实现SingleKeyDatabaseShardingAlgorithm<T>接口
2.分表算法类需要实现SingleKeyTableShardingAlgorithm<T>接口
第二种通过配置文件形式配置。
案例比如:t_order 拆分程t_order_0 t_order _1

   

 

 

maven:

 

注意本项目用的jpa:jpa的相关配置      jpa的底层是hibernate 可以自动通过对象得到sql语句

yml: 

 

 

做分表必须实现接口:

  分表算法类需要实现SingleKeyTableShardingAlgorithm<T>接口

  有三个方法  核心是doEqualsSharding方法: 判断sql  如果有=条件判断  (需要配置分片算法)

  需要写for循环  

        

 

查询所有时候 会发送sql 查询所有表 然后汇总起来 返回给客户端

 

经验单个库  拆分成小表

 

 

 

 

分库分表,单张表进行拆分

   比如t_order 拆分成多个不同的库进行存放 

   分库总数为2    根据id进行分库策略

   

     一般分片都是单个库里面的  如果多个库 垮库查询效率很慢的哦

     

DynamicDataSource遇见Sharding-JDBC实现多租户分库和业务分库分表 前言 Sharding-JDBC 结合 DynamicDataSource 实现分库分表、租户隔离等 阅读详情

相关推荐

三、Spring Boot集成sharding-jdbc实现按时间分库分表

回顾 前篇内容已经实现了spring boot集成mybatis访问MySQL,本篇在此基础上集成sharding-jdbc实现分库分表等功能。 集成sharding-jdbc 首先创建创建数据库和表。这是sharding-jdbc所要求的。 create database db_201810; create database db_201811; use db_201810; cre...

半江残月 1万+

九.吊打面试官系列-数据库优化-Sharding-JDBC实现分库分表

比较传统的小型应用通常是一个项目使用一个数据库进行数据存储,这样的架构模式在数据量日益增长的情况下,数据库势必会成为性能瓶颈。几百万数据还可以通过数据库优化,索引优化等手段勉强支持,但是上千万,上亿的数据再怎么优化索引都无济于事。所以我们的优化手段可以是分库分表。

墨家巨子@俏如来 6091

springboot整合sharding-jdbc实现分库分表详解

springboot整合sharding-jdbc实现分库分表详解

congge 9090

使用shardingJDBC实现数据库的分库分表

一、概念 1、什么是分库分表?为什么要分库分表? 随着业务的增加,数据库的数据量越来越多,当数据量达到1000w或者100G后,数据的查询效率就会越来越低,为了提高效率,把数据量分散在不同的数据库中或者表中,使得单一数据库的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。 2、分库分表的方式 (1)垂直分表:根据分片规则,将数据分布到不同表中。 (2)水平分表:将相关性低的字段拆分到不同的表中。 (3)垂直分库:根据分片规则,将数据分布到不同的库中。 (4)水平分库:根据业

qq_45932382的博客 6530

分享一个N-MOS管和P-MOS管驱动应用实例

大家好,我是『芯知识学堂』的SingleYork,今天给大家分享一下MOS管驱动相关的知识。 MOS管在电路设计中是比较常见的,按照驱动方式来分的话,有两种,即:N-MOS管和P-MOS管。MOS管跟三极管的驱动方式有点类似,但又不完全相同,那么今天笔者将会给大家简单介绍一下N-MOS管和P-MOS管的工作原理,并结合自己实际的应用来给大家分享一下如何来驱动N-MOS管和P-MOS管。 首先,我们先来看一下N-MOS管和P-MOS管分别在电路中的电气符号: 咋一看上面两个电气符号,似乎非常的相似,可能让很

『芯知识学堂』SingleYork 的博客 3万+

京东礼品卡绑定技术解析与安全验证实践

电商系统开发中,卡券绑定是常见的业务场景,其核心在于安全验证机制的设计与实现。从技术原理来看,现代验证系统通常采用多层防护,包括前端数据加密、行为验证(如滑块验证)和风控校验等关键技术。这些机制通过设备指纹采集、请求签名验证等方式,有效防范自动化攻击。在实际工程实践中,开发者需要特别关注接口鉴权流程,正确处理安全令牌(如st/vt令牌)和请求签名。京东礼品卡绑定作为典型案例,展示了如何平衡用户体验与系统安全,其验证系统会持续升级,需要开发者跟踪接口变化。对于企业级应用,建议采用混合模式技术方案,结合浏览器自

weixin_28607671的博客 234

Sharding-JDBC分库分表

垂直分表: 按字段访问频次、是否大字段等原则,将原先的大表拆分为多个小表,从而提升数据库性能。垂直分表会导致表结构改变,所以拆分时尽量从业务角度出发,避免联查,否则得不偿失。垂直分库:可以按照数据表业务,将相同业务的表拆分到多个数据库,这些数据库可以分布在不同的服务器上。这个过程中,表结构不发生改变。拆分之后,压力被多个服务器分别承担,从而提升访问数据,同时可以提高业务清晰度。但它需要解决跨库所带来的所有复杂问题。水平分库。

shaopengjie的博客 5121

OPNET卫星节点仿真避坑指南:为什么你的STK轨道文件导入后位置不对?

本文深入解析OPNET卫星节点仿真中STK轨道文件导入后位置异常的常见问题,揭示坐标系差异(ECI与ECF)、时间基准不匹配等关键因素。通过修改.SA文件头标识、统一时间基准等解决方案,帮助工程师避免仿真失真,提升卫星通信系统仿真的准确性。特别适用于STK与OPNET协同工作的卫星网络仿真场景。

weixin_30335575的博客 600

Sharding-jdbc分库分表

引入 不断增长的业务数据会对MySQL数据库的存储和访问造成极大的性能影响,由于单台服务器的资源(CPU、磁盘、内存等)总是有限的,所以单台数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。不论是获取连接还是插入或查询都会有极大的性能问题。 MySQL大数据量造成的性能瓶颈解决方案: 从SQL入手 加入索引 -> 缓存 -> 主从复制/读写分离 使用缓存,减少对数据库的同步访问 减少MySQL使用,可以使用HBase、polarDB、TiDB等分布式存储,ES查询 分库分表 拓展

Lyzxii 6276

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定?

HITECH海泰克触摸屏如何使用串口进行程序的下载和上传(拨码设置)以及离散量报警相关设定? 首先,我们进行触摸屏一侧的设置,如下图所示: 触摸屏背后有拨码开关,当我们需要上传或下载程序时,需要将7#开关拨到上面; 左侧是DC24V电源接口; 下方是COM1、COM2和COM3通信端口,选择我们需要的端口后,插上通信电缆,拔掉24V电源,然后重新上电; 然后,屏幕会进入如下图所示界面,此时显示当前选择的端口为COM2,我们点击F2“config”,进入设置界面, 可以看到COM2端口是“Enabled”

Robot_PLC_HMI_Automation 3万+

TC8:SOMEIPSRV_SD_MESSAGE_07-09

TTL为服务实例的生命周期。在此生命周期之后,不提供服务实例。

jasonj333 908

分库分表--shardingjdbc

当项目开始的时候,没有想到后续的分库分表的话,其实对于后续的分库分表操作多少会有一些较难处理的,所以一般分库分表都是在开始的时候就提前已经规划了,已经预留了口子,之后才能顺利的进行;其实也不是必须要分库分表,由于国产高性能数据库等的出现,例如 tidb,完全遵守sql92标准,其实直接换上这个也是个非常不错的选择;Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。

学海无涯,我用JAVA 3464

SIWAVE+ADS提取PCB走线寄生参数

本文将介绍一种很适合PCB走线提取寄生电感等参数的方法,即是通过SIWAVE将PCB走线的S参数提取出来,再通过ADS将S参数转换成电感、电容值。

sinat_15150363的博客 1765

springboot整合sharding-jdbc实现按年分库按月分表

springboot整合sharding-jdbc实现按年分库按月分表 1.前言: ​ 此方案为适用对时间依赖度较高的数据进行水平切分,如果你正好符合,那么你可以看看此篇,不符合也可以看看,毕竟sharding-jdbc对分库分表的方案实现度很高,可根据自身实际情况进行数据切分 2.分库分表概念 ​ 在做实现之前,我们需要了解到何为分库分表,为何要这样做,这样做有何利弊? ​ 由于关系型数据库的先天特性,在单表数据量达到一定体量的时候,就会出现性能瓶颈,至于具体是多少,此篇不做研究,说法众多,后期有时

weixin_47077809的博客 1万+

【RAG文档解析优化】复杂Excel表格处理

—从识别表格边界,到恢复内部结构,再到生成RAG友好的表示——我们可以系统性地将这些“带刺的玫瑰”驯服。虽然代码实现可能充满细节和挑战,但其带来的回报是巨大的:一个更干净、更可靠的知识库,以及一个能真正理解和利用表格数据、从而提供精准答案的RAG系统。为了人类阅读的便利性,制作者常常会使用合并单元格来创建标题、使用多层表头来组织复杂的列、在同一个Sheet页中放置多个相关的表格,并添加大量的注释说明。它们就像一朵朵“带刺的玫瑰”,虽然蕴含着宝贵的数据,但如果直接用传统的方法(如。

kakaZhui的博客 853

uniapp - 解决App端(安卓/苹果)使用uni.openlocation跳转第三方高德地图白屏问题,安卓苹果ios平台使用应用内置地图查看位置打不开,打包后App高德地图页面白屏不显示的问题!

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,高德地图白屏,uniapp调用内置高德地图白屏,uniApp使用uni.openlocation空白不显示地图,uniappapp端如何解决openlocation地图不显示问题,打开第三方地图显示位置地图没反应,uni.openlocation跳转第三方高德地图,APP端白屏问题,使用uni.openlocation跳转到第三方导航软件的时候,app端跳转的是高德地图,但是白屏没有反应,打包发布后白

🏆 前端领域优质创作者 1万+

Sharding-JDBC 实现分库分表

Sharding-JDBC 作为一款强大的数据库中间件,为实现分库分表提供了便捷的解决方案。通过合理的分库分表策略制定、Sharding-JDBC 的安装配置、数据迁移和应用程序集成,以及性能优化,可以有效地提高系统的性能、可扩展性和可用性。

果酱 の 博客 1612

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

sharding-jdbc实现原理——分库分表代码实战

Sharding-JDBC简介 Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表访问。Sharding-JDBC是继dubbox和elastic-job之后,ddframe系列开源的第3个项目。 实现原理 前文已介绍了Sharding-JDBC是实现了JDBC协议的jar文件。基于JDBC协议的实...

jack_shuai的博客 7102

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Sharding-Jdbc+Mybatis+SpringBoot的分库分表实现

Sharding-Jdbc+Mybatis+SpringBoot的分库分表实现

YIYIYI 1346

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Mybatis-Plus 配合Sharding-JDBC 实现分库分表

本文介绍了数据库分库分表的概念,并对比了垂直拆分与水平拆分的优缺点。在 MyBatis-Plus 中,可以通过 Sharding-JDBC 轻松实现分库分表,提高数据库的可扩展性和查询性能。此外,我们深入分析了 MyBatis-Plus 与 Sharding-JDBC 结合的底层执行逻辑,展示了 SQL 路由、改写及执行的完整过程,并补充了范围查询的实现方式及底层机制。在实际应用中,选择合适的拆分策略需要结合业务需求,确保数据分布均匀,并考虑事务一致性和查询优化等问题。

秋元的博客 2496

解读分库分表中间件Sharding-JDBC与实现分库分表功能

分库分表适用场景分库分表用于应对当前互联网常见的两个场景——大数据量和高并发。通常分为垂直拆分和水平拆分两种。垂直拆分是根据业务将一个库(表)拆分为多个库(表)。如:将经常和不常访问的字段拆分至不同的库或表中。由于与业务关系密切,目前的分库分表产品均使用水平拆分方式。水平拆分则是根据分片算法将一个库(表)拆分为多个库(表)。如:按照ID的最后一位以3取余,尾数是1的放入第1个库(表),尾数是2的放...

中年闰土的博客 24万+

Spring Boot集成Sharding-jdbc + Mybatis-Plus实现分库分表

Spring Boot集成Sharding-jdbc实现分库分表和读写分离一、 Sharding-jdbc简介二、项目创建 一、 Sharding-jdbc简介     Sharding-jdbc是当当网开源的中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为...

Macky_He的博客 1万+

sharding jdbc分库分表实现及常见问题

单表数据量达到5千万之后查询时扫描的行太多,SQL效率低单表存储超过时,备份、恢复、索引重建等操作会显著变慢。数据库支持的连接数有限,分库之后数据均匀分配到不同库中,可以支持较高的并发量(8核16G机器数据库并发量在几千量级)

weixin_63318285的博客 1587

Sharding-Jdbc 实现读写分离 + 分库分表

ShardingSphere-Jdbc定位为轻量级Java框架,在Java的Jdbc层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,可理解为增强版的Jdbc驱动,完全兼容Jdbc和各种ORM框架。

奔走的蚂蚁的博客 1263

【Sharding-JDBC】SpringBoot2 + Sharding-jdbc实现分库分表

目录一、背景1.1 表结构1.2 水平分库水平分表情况1.3 开发环境二、代码实现2.1 pom.xml2.2 application.properties2.3 application-fkfb.properties2.4 ProductInfoMapper.xml2.5 ProductInfoMapper.java2.6 ProductInfo.java2.7 ProductInfoService.java2.8 ProductInfoServiceImpl.java三、个人总结 一、背景 有一个产品库

weixin_38538285的博客 1879

sharding-jdbc实现分库分表

Springboot整合分库分表

人生就像一场戏 1454
上一篇: SpringBoot2.0整合Sharding-Jdbc
下一篇: 分布式链路监控与追踪系统Zipkin
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值