尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

数据库分库分表实践:tech-pdai-spring-demos中的Sharding-JDBC配置指南

数据库分库分表实践:tech-pdai-spring-demos中的Sharding-JDBC配置指南
📅 发布时间:2026/7/29 21:29:46

数据库分库分表实践:tech-pdai-spring-demos中的Sharding-JDBC配置指南

【免费下载链接】tech-pdai-spring-demosSpring Framework5/SpringBoot 2.5.x Demos项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos

在现代应用开发中,随着数据量的快速增长,数据库分库分表已成为解决性能瓶颈的关键技术。tech-pdai-spring-demos项目提供了基于Sharding-JDBC的完整分库分表解决方案,帮助开发者轻松实现数据分片策略。本文将详细介绍如何在该项目中配置和使用Sharding-JDBC进行表级分片,适合新手快速上手分库分表实践。

为什么选择Sharding-JDBC?

Sharding-JDBC作为轻量级的分布式数据库中间件,具有以下核心优势:

  • 无侵入性:完全兼容JDBC和各种ORM框架,无需修改业务代码
  • 灵活分片策略:支持行表达式、自定义算法等多种分片方式
  • 读写分离:可配合主从架构实现读写分离
  • 分布式事务:提供柔性事务支持

在tech-pdai-spring-demos项目中,多个模块展示了Sharding-JDBC的不同应用场景,包括:

  • 241-springboot-demo-shardingjdbc-mybatis-tables(表分片)
  • 243-springboot-demo-shardingjdbc-jpa-tables(JPA集成表分片)
  • 244-springboot-demo-shardingjdbc-jpa-tenant-db(多租户分库)
  • 246-springboot-demo-shardingjdbc-jpa-masterslave(主从架构)

快速开始:表分片环境搭建

1. 引入Sharding-JDBC依赖

在项目的pom.xml中添加Sharding-JDBC Starter依赖,以241-springboot-demo-shardingjdbc-mybatis-tables模块为例:

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

完整的依赖配置可参考241-springboot-demo-shardingjdbc-mybatis-tables/pom.xml

2. 配置数据源与分片规则

在application.yml中配置数据源和分片策略,核心配置如下:

spring: shardingsphere: datasource: names: ds ds: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://localhost:3306/test_db_sharding?allowPublicKeyRetrieval=true&useSSL=false username: test password: bfXa4Pt2lUUScy8jakXf sharding: tables: tb_user: actual-data-nodes: ds.tb_user_$->{0..1} table-strategy: inline: sharding-column: id algorithm-expression: tb_user_$->{id % 2} key-generator: column: id type: SNOWFLAKE

上述配置实现了:

  • 使用单个数据源(ds)
  • 将tb_user表按id取模2分为tb_user_0和tb_user_1两个实际表
  • 使用雪花算法(SNOWFLAKE)生成分布式ID

完整配置文件路径:241-springboot-demo-shardingjdbc-mybatis-tables/src/main/resources/application.yml

核心分片策略详解

行表达式分片策略

Sharding-JDBC最常用的分片方式,通过inline表达式定义分片规则:

table-strategy: inline: sharding-column: id algorithm-expression: tb_user_$->{id % 2}

语法说明:

  • $->{}:行表达式标识
  • id % 2:按id字段取模2
  • 结果为0时路由到tb_user_0,为1时路由到tb_user_1

分布式ID生成

配置雪花算法生成全局唯一ID:

key-generator: column: id type: SNOWFLAKE props: worker: id: 123
  • worker.id:节点ID,分布式环境下需保证唯一
  • 支持的ID生成器:SNOWFLAKE、UUID、LEAF等

多场景分库分表示例

1. 多租户分库方案

在244-springboot-demo-shardingjdbc-jpa-tenant-db模块中,实现了基于租户ID的分库策略:

spring: shardingsphere: sharding: default-database-strategy: inline: sharding-column: tenant_id algorithm-expression: ds_$->{tenant_id % 2}

通过default-database-strategy配置默认分库策略,所有表都会按tenant_id路由到不同数据库。

2. 主从复制与读写分离

246-springboot-demo-shardingjdbc-jpa-masterslave模块展示了如何配置读写分离:

spring: shardingsphere: rules: readwrite-splitting: >git clone https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos
  1. 选择合适的Sharding-JDBC模块

    • 表分片:241-springboot-demo-shardingjdbc-mybatis-tables
    • JPA集成:243-springboot-demo-shardingjdbc-jpa-tables
    • 多租户分库:244-springboot-demo-shardingjdbc-jpa-tenant-db
  2. 修改数据库配置

    • 编辑application.yml中的数据库连接信息
    • 创建对应的分片数据库和表
  3. 运行测试

cd 241-springboot-demo-shardingjdbc-mybatis-tables mvn spring-boot:run

常见问题解决

1. 分片键必须出现在SQL中

错误示例:

SELECT * FROM tb_user WHERE name = 'test'

正确示例:

SELECT * FROM tb_user WHERE id = 1 AND name = 'test'

2. 不支持的SQL函数

Sharding-JDBC对部分SQL函数有限制,如不支持LAST_INSERT_ID(),应使用雪花算法等分布式ID生成策略。

3. 事务支持

默认情况下Sharding-JDBC使用本地事务,如需分布式事务支持,需添加额外配置:

spring: shardingsphere: rules: transaction: type: XA props: xa-transaction-manager-type: Atomikos

总结

tech-pdai-spring-demos项目提供了丰富的Sharding-JDBC实践案例,从基础的表分片到复杂的多租户分库,覆盖了大部分实际应用场景。通过本文介绍的配置方法,开发者可以快速掌握分库分表技术,为高并发、大数据量应用提供可靠的数据存储解决方案。建议结合具体业务场景选择合适的分片策略,并通过项目中的测试用例深入理解Sharding-JDBC的实现原理。

【免费下载链接】tech-pdai-spring-demosSpring Framework5/SpringBoot 2.5.x Demos项目地址: https://gitcode.com/gh_mirrors/te/tech-pdai-spring-demos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

  • 2026年在广东做兼职人员结算咨询和落地服务的靠谱企业有哪些:爱灵活专业合规值得信赖 - 米諾
  • AI Agent 开发实战(六):用 Spring AI 搭建你的第一个 Agent
  • 如何解决Docker Registry部署瓶颈?Docket分布式传输架构全解析

最新新闻

  • 3分钟免费解锁鸣潮120帧:WaveTools工具箱完整使用指南
  • AC自动机 学习笔记
  • 拯救消失的网页记忆:Wayback Machine浏览器扩展完全指南
  • 芯聆CLD6255(4 x 190W, 2 x 380W 或 2.1 模式 (2x190W + 1x380W ) @1% THD 数字输入 D 类音频播放器)
  • 软件测试工程师到底是做什么的?一文讲清职责、技能与成长路径
  • 揭秘XStreaming背后的WebRTC技术:打造稳定流畅的串流体验

日新闻

  • 金融舆情监测系统:多语言情感分析与实时可视化技术解析
  • QT C++调用Python异常处理:PyBind11实战与跨语言编程指南
  • A-47双麦回音消除模块:主次麦空间分布与差分连接对ENC性能的影响

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号