首页 > 作文

使用sharding

更新时间:2023-04-04 03:35:52 阅读: 评论:0

前面的文章使用中详细记录了如何使用sharding-jdbc实现水平分表,即根据相应的策略,将一部分数据存入到表1中,一部分数据存入到表2中,逻辑上为同一张表,分表操作全部交由sharding-jdbc进行处理。
可能根据需要,还需要将一张表的数据拆分存入到多个数据库中,甚至多个数据库的多个表中,使用sharding-jdbc同样可以实现。

重复的篇幅则不再赘述,下面重点记录升级的过程。
分库分表策略:将id为偶数的存入到库1中,奇数存入到库2中,在每个库中,再根据学生的性别分别存到到表1和表2中。

新建两个数据库sharding_db1和sharding_db2,在两个数据库中在分别创建结构相同的两张表,student_1和student_2。

create table `newtable` (`id`  bigint(20) not null ,`name`  varchar(50) character t utf8mb4 collate utf8mb4_bin not null ,`age`  int(11) not null ,`gender`  int(1) not null ,primary key (`id`));

相比前面文章中,将gender性别字段设置成了int类型,方便根据性别再进行分表。

修改配置文件

spring.main.allow-bean-definition-overriding=true# 配置sharding-jdbc的分片策略# 配置数据源,给数据源起名g1,g2...此处可配置多数据源spring.shardingsphere.datasource.names=g1,g2# 配置数据源具体内容:连接池,驱动,地址,用户名,密码spring.shardingsphere.datasource.g1.type=com.alibaba.druid.pool.druiddatasourcespring.shardingsphere.datasource.g1.driver-class-name=com.mysql.cj.jdbc.driverspring.shardingsphere.datasource.g1.url=jdbc:mysql://localhost:3306/sharding_db1?characterencoding=utf-8&uunicode=true&ussl=fal&rvertimezone=utcspring.shardingsphere.datasource.g1.urname=rootspring.shardingsphere.datasource.g1.password=123456spring.shardingsphere.datasource.g2.type=com.alibaba.druid.pool.druiddatasourcespring.shardingsphere.datasource.g2.driver-class-name=com.mysql.cj.jdbc.driverspring.shardingsphere.datasource.g2.url=jdbc:mysql://localhost:3306/sharding_db2?characterencoding=utf-8&uunicode=true&ussl=fal&rvertimezone=utcspring.shardingsphere.datasource.g2.urname=rootspring.shardingsphere.datasource.g2.password=123456# 配置数据库的分布下雪了日记,表的分布spring.shardingsphere.sharding.tables.student.actual-data-nodes=g$->{1..2}.student_$->{1..2}# 指定student表 主键gid 生成策略为 snowflakespring.shardingsphere.sharding.tables.student.key-generator.column=idspring.shardingsphere.sharding.tables.studen社会团体章程t.我国最早的神话小说key-generator.type=snowflake# 指定数据库分片策略 约定id值是偶数添加到sharding_db1中,奇数添加到sharding_db2中spring.shardingsphere.sharding.tables.student.databa-strategy.inline.sharding-column=idspring.shardingsphere.sharding.tables.student.databa-strategy.inline.algorithm-expression=g$->{id % 2雷锋资料 + 1}# 指定表分片策略 约定gender值是0添加到student_1表,如果gender是1添加到stude真帝王蝎nt_2表spring.shardingsphere.sharding.tables.student.table-strategy.inline.sharding-column=genderspring.shardingsphere.sharding.tables.student.table-strategy.inline.algorithm-expression=student_$->{gender % 2 + 1}# 打开sql输出日志spring.shardingsphere.props.sql.show=true

配置多个数据源时,使用逗号隔开,分别配置其属性。除了配置表分片策略,还需配置库分配策略。

测试类

@springboottestclass shardingjdbcdemoapplicationtests {    @autowired    private studentmapper studentmapper;    @test    public void test01() {        for (int i = 0; i < 15; i++) {            student student = new student();            student.tname("wuwl");            student.tage(27);            student.tgender(i%2);            studentmapper.inrt(student);        }    }}

运行效果:

看样子是成功了,查看数据库数据。

sharding_db1.student_1:

sharding_db1.student_2:

sharding_db2.student_1:

sharding_db2.student_2:

到此这篇关于使用sharding-jdbc实现水平分库+水平分表的示例代码的文章就介绍到这了,更多相关sharding-jdbc水平分库水平分表内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 03:35:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/51bbddfbff2f2d91e98bef33834016c9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:使用sharding.doc

本文 PDF 下载地址:使用sharding.pdf

标签:策略   多个   数据源   水平
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图