首页 > 其他分享 > Sharding-JDBC 原理和spring boot 核心配置文件说明

Sharding-JDBC 原理和spring boot 核心配置文件说明

时间:2022-11-30 16:23:57浏览次数:39  
标签:none JDBC 配置文件 boot strategy tbl 分片 sharding id

1、分库分表策略: 如每个数据记录属于一个集团ID、属于一个店铺ID列,可以根据集团ID%数据库数量取余设置规则分片键,及设置用哪个数据库和哪个表。 同现可以使用数据记录中的一列作为 分库、分表的分片键 如订单表中 order_id 等都可以。

用于分片的数据库字段。我们将 表分片以后,当执行一条SQL时,通过对字段 店铺ID、集团ID取模的方式来决定,这条数据该在哪个数据库中的哪个表中执行,此时 字段就是 表的分片健。

下面是具体的springboot使用 sharding -jdbc 配置文件,可以根据具体置文件进行理解。

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  #typeAliasesPackage: com.hualala.poshealth
  #字段策略
  global-config:
    db-config:
      insert-strategy: not_null
      update-strategy: not_null
      #逻辑删除
      logic-not-delete-value: 0
      logic-delete-value: 1
  #驼峰下划线转换
  configuration:
    map-underscore-to-camel-case: true
    #日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  logging:
    file:
      path: classpath:logback.xml
    levels: info

sharding:
  jdbc:
    datasource:
      names: soul0,soul1   # 数据库 分布信息
      soul0:
        jdbcUrl: jdbc:mysql://xxxxx.com:3306/db_pos_health_0?useUnicode=true&characterEncoding=utf8&autoReconnectForPools=true&socketTimeout=60000&useLocalSessionState=true
        username: abc
        password: 123
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 初始连接数
        initialSize: 5
        # 最小连接数
        minIdle: 5
        # 最大连接池数量
        maxActive: 100
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 用来检测连接是否有效的sql
        validationQuery: SELECT 1 FROM DUAL
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
      soul1:
        jdbcUrl: jdbc:mysql://xxx.com:3306/db_pos_health_1?useUnicode=true&characterEncoding=utf8&autoReconnectForPools=true&socketTimeout=60000&useLocalSessionState=true
        username: abc
        password: 123
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 初始连接数
        initialSize: 5
        # 最小连接数
        minIdle: 5
        # 最大连接池数量
        maxActive: 100
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 用来检测连接是否有效的sql
        validationQuery: SELECT 1 FROM DUAL
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
    config:
      sharding:
        tables:
          tbl_client_report_base: # 客户端信息,无需分库分表
            actual-nodes: soul0.tbl_client_report_base  # 指定主库中唯一的表节点
            database-strategy:
              none: # 分片策略为none
                sharding-column: none  # 分片键为none
            table-strategy:
              none: # 分片策略为none
                sharding-column: none # 分片键为none
            #keyGeneratorColumnName: base_id
          tbl_login_info: # 登录信息,无需分库分表
            actual-nodes: soul0.tbl_login_info  # 指定主库中唯一的表节点
            database-strategy:
              none: # 分片策略为none
                sharding-column: none  # 分片键为none
            table-strategy:
              none: # 分片策略为none
                sharding-column: none # 分片键为none
            #keyGeneratorColumnName: base_id
          tbl_collection_client: # 用户收藏,无需分库分表
            actual-nodes: soul0.tbl_collection_client  # 指定主库中唯一的表节点
            database-strategy:
              none: # 分片策略为none
                sharding-column: none  # 分片键为none
            table-strategy:
              none: # 分片策略为none
                sharding-column: none # 分片键为none
          tbl_client_control_msg: #远程控制信息
            actual-data-nodes: soul${0..1}.tbl_client_control_msg${0..1}
            table-strategy:
              inline:
                sharding-column: group_id
                algorithm-expression: tbl_client_control_msg${group_id % 2}
            database-strategy: #分库策略
              inline: #行表达式
                sharding-column: shop_id        #列名称,多个列以逗号分隔
                algorithm-expression: soul${shop_id % 2}    #按模运算分配
          tbl_operate_log: #操作记录
            actual-data-nodes: soul${0..1}.tbl_operate_log${0..4}
            table-strategy:
              inline:
                sharding-column: group_id
                algorithm-expression: tbl_operate_log${group_id % 5}
            database-strategy: #分库策略
              inline: #行表达式
                sharding-column: shop_id        #列名称,多个列以逗号分隔
                algorithm-expression: soul${shop_id % 2}    #按模运算分配

        default-database-strategy:
          inline:
            sharding-column: shop_id
            algorithm-expression: soul${shop_id % 2}
        binding-tables: tbl_client_report_base,tbl_client_control_msg,tbl_login_info,tbl_collection_client,tbl_operate_log
        broadcastTables: tbl_client_report_base,tbl_collection_client,tbl_login_info  # 广播表
        default-data-source-name: soul0 # 库分片策略为none时一定要设置默认数据源,否则应用无法启动

如有问题可以一起沟通讨论。

标签:none,JDBC,配置文件,boot,strategy,tbl,分片,sharding,id
From: https://www.cnblogs.com/liyanbofly/p/16938777.html

相关文章

  • SpringBoot Mongodb实战整合
    目录找出数组中,具有qid=1并且reorderFlag=0的记录找出数组中,qid=1或者reorderFlag=0的记录新增数组数据修改数组数据,根据条件批量修改嵌套数组的字段值删除数组数据......
  • SpringBoot 如何实现异步编程
    https://blog.csdn.net/m0_60028455/article/details/121650608 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题?为什么要用异步框架,它解决什么问题?在......
  • 基于SpringBoot+Layui的物业管理系统【完整项目源码】
    使用建议业务逻辑简略,需要细化业务,增加业务开发,如未交费提醒等技术架构数据库:MySQL8.X后端技术:SpringBoot2.3.0,MyBatisPlus数据连接池:Druid前端技术:La......
  • springboot整合quartz达到动态配置定时任务的效果
    如题:首先贴上maven的配置<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>......
  • SpringCloud之Config分布式配置文件中心
    分布式系统面临的配置问题:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息......
  • 论项目中日志处理的正确操作(springboot案例)
    理论和日志的重要不需要重复,各位都明白,企业中甩锅 查询记录  必要的东西,直接贴上代码案例 maven<dependency><groupId>org.springframework.boot</groupI......
  • SpringBoot整合Swagger生成接口文档
    介绍:Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见......
  • Spring的ioc介绍,配置文件和基本使用
    1.什么是spring,它能够做什么?  Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。  Spring使用基本的JavaBean来完成以前只可......
  • springboot项目同时支持http和https访问
    首先使用https需要一个server.keystore,生成教程可以然后开始改动项目:配置文件中填入server.keystore的信息server.ssl.key-store=server.keystoreserver.ssl.key-alias=tomc......
  • SpringBoot Maven RepackageMojo 打包失败原因
    maven打包提示:org/springframework/boot/maven/RepackageMojohasbeencompiledbyamorerecentversionoftheJavaRuntime(classfileversion61.0),thisver......