• 分库分表简单介绍


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

    shardingsphere 组件

    Apache ShardingSphere

    1.引入maven依赖

    1. <dependency>
    2. <groupId>org.apache.shardingspheregroupId>
    3. <artifactId>sharding-jdbc-spring-boot-starterartifactId>
    4. <version>4.0.0-RC1version>
    5. dependency>

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

    只用到了水平,水平拆表

    cls=provide,order,user,

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

    配置 针对规则配置的模式

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

    配置项说明:

    在application.properties中配置选项

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

    写model和mapper

    1. @Data
    2. public class Goods {
    3. private Long id;
    4. private String name;
    5. private Long uid;
    6. private String status;
    7. }
    8. @Data
    9. public class Dict {
    10. private Long id;
    11. private String name;
    12. private String status;
    13. }
    14. @Mapper
    15. public interface GoodsMapper extends BaseMapper {
    16. }
    17. @Mapper
    18. public interface DictMapper extends BaseMapper {
    19. }

    测试方法

    1. @Test
    2. void addGoods(){
    3. for (int i = 0; i < 10; i++) {
    4. Goods goods = new Goods();
    5. goods.setName("商品" + i);
    6. goods.setUid(RandomUtil.randomLong(1000L, 9999L));
    7. goods.setStatus("备注 " + i);
    8. goodsMapper.insert(goods);
    9. }
    10. }
    11. @Test
    12. void getGoods(){
    13. QueryWrapper wrapper = new QueryWrapper<>();
    14. // wrapper.eq("id", "1714939259473723393");
    15. Goods goods = goodsMapper.selectById(1716273265985294340L);
    16. System.out.println(goods.toString());
    17. }
    18. @Test
    19. void addDict(){
    20. for (int i = 0; i < 10; i++) {
    21. Dict dict = new Dict();
    22. dict.setName("字典" + i);
    23. dict.setStatus("备注 " + i);
    24. dictMapper.insert(dict);
    25. }
    26. }
    27. @Test
    28. void deleteDict(){
    29. QueryWrapper wrapper = new QueryWrapper<>();
    30. wrapper.eq("id", "1716276779037872130");
    31. dictMapper.delete(wrapper);
    32. }

    3.根据id ={id%10}

    加上用户的后一位

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

    =orderId

    ={orderId%10}

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

    根据规则走

  • 相关阅读:
    go-cqhttp系列教程-go-cqhttp安装
    springboot的几个注解
    第八章《Java高级语法》第7节:枚举
    汽车产业互联网如何跟上“智能”和“市场”节奏
    Linux基础IO(二)
    “文件迁徙行动”:高效送达第三方档案系统,守护惬意下班时光
    【Lychee图床】本地电脑搭建私人图床,公网远程访问
    QQ自动批量加好友(手机端)
    使用java解析hashMap
    如何使用Docker轻松构建和管理应用程序(二)
  • 原文地址:https://blog.csdn.net/qq_52963857/article/details/133982324