分库分表简单介绍

编程入门 行业动态 更新时间:2024-10-21 13:26:54

分库分表<a href=https://www.elefans.com/category/jswz/34/1770983.html style=简单介绍"/>

分库分表简单介绍

分库分表是一种数据库管理方法,它的目的是提高数据库的性能、扩展性和可用性,无论是分库还是分表,都是从水平与垂直两个维度进行切分。

shardingsphere 组件

Apache ShardingSphere

1.引入maven依赖

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

2.没有用垂直,只有在业务上垂直

只用到了水平,水平拆表

cls=provide,order,user,

=order.orderMaster${0...9}

配置 针对规则配置的模式

单机模式(默认)内存模式 集群模式

配置项说明:

在application.properties中配置选项

#此配置将默认后面的bean覆盖前面的同名bean,否则会报错
spring.main.allow-bean-definition-overriding=true#sharding-jdbc配置
##配置数据源名称
spring.shardingsphere.datasource.names=order##配置数据源g1具体内容
spring.shardingsphere.datasource.order.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.order.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.order.url=jdbc:mysql://192.168.14.2:3306/goods_db1 useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
spring.shardingsphere.datasource.order.username=root
spring.shardingsphere.datasource.order.password=123456##配置公共表
spring.shardingsphere.sharding.broadcast-tables=dict
##配置公共表的主键及生成策略
spring.shardingsphere.sharding.tables.dict.key-generator.column=id
spring.shardingsphere.sharding.tables.dict.key-generator.type=SNOWFLAKE##配置order_master数据库分布以及表分布
spring.shardingsphere.sharding.tables.order_master.actual-data-nodes=order.order_master_${0..9}spring.shardingsphere.sharding.tables.order_master.table-strategy.inline.sharding-column=id
spring.shardingsphere.sharding.tables.order_master.table-strategy.inline.algorithm-expression=order_master_${id%10}##配置order_item数据库分布以及表分布
spring.shardingsphere.sharding.tables.order_item.actual-data-nodes=order.order_item_${0..9}spring.shardingsphere.sharding.tables.order_item.table-strategy.inline.sharding-column=orderId
spring.shardingsphere.sharding.tables.order_item.table-strategy.inline.algorithm-expression=order_item_${orderId%10}##打印sql
spring.shardingsphere.props.sql.show=true

写model和mapper

@Data
public class Goods {private Long id;private String name;private Long uid;private String status;
}@Data
public class Dict {private Long id;private String name;private String status;
}@Mapper
public interface GoodsMapper extends BaseMapper<Goods> {
}@Mapper
public interface DictMapper extends BaseMapper<Dict> {
}

测试方法

@Testvoid addGoods(){for (int i = 0; i < 10; i++) {Goods goods = new Goods();goods.setName("商品" + i);goods.setUid(RandomUtil.randomLong(1000L, 9999L));goods.setStatus("备注 " + i);goodsMapper.insert(goods);}}@Testvoid getGoods(){QueryWrapper<Goods> wrapper = new QueryWrapper<>();
//        wrapper.eq("id", "1714939259473723393");Goods goods = goodsMapper.selectById(1716273265985294340L);System.out.println(goods.toString());}@Testvoid addDict(){for (int i = 0; i < 10; i++) {Dict dict = new Dict();dict.setName("字典" + i);dict.setStatus("备注 " + i);dictMapper.insert(dict);}}@Testvoid deleteDict(){QueryWrapper<Dict> wrapper = new QueryWrapper<>();wrapper.eq("id", "1716276779037872130");dictMapper.delete(wrapper);}

3.根据id ={id%10}

加上用户的后一位

4.order.orderItem${0...9}

=orderId

={orderId%10}

5.能不分就不分,根据业务走,

根据规则走

更多推荐

分库分表简单介绍

本文发布于:2023-12-04 16:13:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1661487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简单   分库分表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!