首页 > 其他分享 >Sharding-Jdbc配置示例

Sharding-Jdbc配置示例

时间:2023-05-23 10:56:33浏览次数:30  
标签:Jdbc 示例 shardingsphere sharding 算法 名称 分片 Sharding order

 

#应用名称
spring:
  application:
    name: sharding-jdbc-test

  #开发环境设置
  profiles:
    active: dev

  #配置为内存模式
  shardingsphere:
    mode:
      type: Memory

    # 配置真实数据源
    datasource:
      names: server-order00,server-order01

      # 配置第 1 个数据源
      server-order00:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://127.0.0.1:3306/sharding_jdbc_order01
        username: root
        password: 123456

      # 配置第 2 个数据源
      server-order01:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://127.0.0.1:3306/sharding_jdbc_order02
        username: root
        password: 123456


    #--------------------------------------标准分片的配置(数据节点配置)
    #由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持 inline 表达式。
    #缺省表示使用已知数据源与逻辑表名称生成数据节点,用于广播表(即每个库中都需要一个同样的表用于关联查询,多为字典表)或只分库不分表且所有库的表结构完全一致的情况
    #https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/yaml-config/rules/sharding/
    rules:
      sharding:
        tables: # 数据分片规则配置
          t_order: # 逻辑表名称
            actualDataNodes: server-order0$->{0..1}.t_order$->{0..1} # 由数据源名 + 表名组成(参考 Inline 语法规则)
            databaseStrategy: # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
              standard: # 用于单分片键的标准分片场景
                shardingColumn: user_id # 分片列名称(数据库列字段,用户名称)
                shardingAlgorithmName: t-order-inline # 分片算法名称
            tableStrategy: # 分表策略,同分库策略
              standard: # 用于单分片键的标准分片场景
                shardingColumn: order_no # 分片列名称(数据库列字段,订单号)
                shardingAlgorithmName: t-order-hash-mod # 分片算法名称
            keyGenerateStrategy: # 分布式序列策略
              column: id # 自增列名称,缺省表示不使用自增主键生成器
              keyGeneratorName: kgan-snowflake # 分布式序列算法名称

          t_order_item: # 逻辑表名称
            actualDataNodes: server-order0$->{0..1}.t_order_item$->{0..1} # 由数据源名 + 表名组成(参考 Inline 语法规则)
            databaseStrategy: # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
              standard: # 用于单分片键的标准分片场景
                shardingColumn: user_id # 分片列名称(数据库列字段,用户名称)
                shardingAlgorithmName: t-order-inline # 分片算法名称
            tableStrategy: # 分表策略,同分库策略
              standard: # 用于单分片键的标准分片场景
                shardingColumn: order_no # 分片列名称(数据库列字段,订单号)
                shardingAlgorithmName: t-order-hash-mod # 分片算法名称
            keyGenerateStrategy: # 分布式序列策略
              column: id # 自增列名称,缺省表示不使用自增主键生成器
              keyGeneratorName: kgan-snowflake # 分布式序列算法名称


          t_dict: # 逻辑表名称
            actualDataNodes: server-order0$->{0..1}.t_dict # 由数据源名 + 表名组成(参考 Inline 语法规则)


        # ---------------------------------------分片算法配置
        #https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/yaml-config/algorithm/
        shardingAlgorithms:
          #行表达式分片算法
          t-order-inline: # 分片算法名称
            # type 和 props,请参考分片内置算法:https://shardingsphere.apache.org/document/current/cn/user-manual/common-config/builtin-algorithm/sharding/
            type: INLINE # 分片算法类型
            props: # 分片算法属性配置
              #t_order0$->{user_id % 2} 表示 t_order 表根据 user_id 取模(取余) 2,而分成 2 张表,表名称为 t_order01 到 t_order02
              algorithm-expression: server-order0$->{user_id % 2}
          #取模分片算法
          t-order-mod: # 分片算法名称
            # type 和 props,请参考分片内置算法:https://shardingsphere.apache.org/document/current/cn/user-manual/common-config/builtin-algorithm/sharding/
            type: MOD # 分片算法类型
            props: # 分片算法属性配置
              #分片数量
              sharding-count: 2
          #哈希取模分片算法
          t-order-hash-mod: # 分片算法名称
            # type 和 props,请参考分片内置算法:https://shardingsphere.apache.org/document/current/cn/user-manual/common-config/builtin-algorithm/sharding/
            type: HASH_MOD # 分片算法类型
            props: # 分片算法属性配置
              #分片数量
              sharding-count: 2
            # 分布式序列算法配置


        #---------------------------------------分布式序列算法
        #https://shardingsphere.apache.org/document/current/cn/user-manual/common-config/builtin-algorithm/keygen/
        keyGenerators:
          kgan-snowflake: # 分布式序列算法名称
            type: SNOWFLAKE # 分布式序列算法类型
            #props: # 分布式序列算法属性配置

        #指分片规则一致的一组分片表。 使用绑定表进行多表关联查询时,必须使用分片键进行关联,否则会出现笛卡尔积关联或跨库关联,从而影响查询效率。
        #例如:t_order 表和 t_order_item 表,均按照 order_id 分片,并且使用 order_id 进行关联,则此两张表互为绑定表关系。
        #绑定表之间的多表关联查询不会出现笛卡尔积关联,关联查询效率将大大提升
        #https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/
        bindingTables: # 绑定表规则列表
          - t_order,t_order_item  #解决笛卡尔积查询

        #指所有的分片数据源中都存在的表,表结构及其数据在每个数据库中均完全一致。 适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。
        #https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/
        broadcastTables: # 广播表规则列表
          - t_dict

    props:
      #是否在日志中打印 SQL 打印 SQL 默认值 false
      sql-show: true

表结构:

​编辑

 

标签:Jdbc,示例,shardingsphere,sharding,算法,名称,分片,Sharding,order
From: https://www.cnblogs.com/fenghd/p/17422650.html

相关文章

  • 记录学习 ShardingSphere 遇到的坑
    ​ 首先来一下官网文档地址:概览::ShardingSphere一、数据库分为2个库,每个库有2张表​编辑 二、配置官方有很多配置方式(ShardingSphere-JDBC::ShardingSphere),这边使用的是YAML配置(YAML配置::ShardingSphere)规则配置:数据分片遇到的坑以下是官方给出的参数配置解......
  • 2023新版小程序头像昵称显示 代码示例如下 可复制使用
    新版用户授权名字和头像官网点击触发用户头像部分:<blockwx:if="{{!avatarUrl}}">检查用户头像是否存在。如果头像不存在,显示默认头像。<blockwx:else="{{avatarUrl}}">如果头像存在,显示用户头像。<buttonopen-type="chooseAvatar"bind:chooseavatar="onChooseAvatar"cl......
  • 通过API接口调用数据的优势是什么?API接口调用展示示例
    ​通过API接口调用数据的优势主要有以下几点:1.规范化与一致性:API接口提供一种统一的方式来获取数据,保证了数据的规范化与一致性,消除了不同数据源可能带来的格式和结构上的差异。2.灵活性:使用API接口可以定制请求的参数和返回结果,让请求方可以得到所需的数据,而不必获取整个数......
  • Java调用采集拼多多根据ID获取商品详情API接口返回值说明示例,获取电商平台商品详情数
    ​     拼多多是一家基于C2B拼团营销方式主营团购的电商平台,其盈利模式由利润源、利润点、利润杠杆、利润通道和利润屏障五个要素组成的。通过锁定目标客户、关注客户价值、举办相关活动、不断拓展收入来源等经营策略,拼多多在较短的时间内得以快速成长。然而这种模式也......
  • 数据抓取使用HTTP隧道代码示例
    以下是使用Python的requests库实现HTTP隧道的代码示例:```pythonimportrequests#设置代理服务器地址和端口号proxy_host='127.0.0.1'proxy_port='8888'#设置目标网站URLurl='ExampleDomain'#创建Session对象session=requests.Session()#设置代理服务器session.proxies......
  • fastapi最简单使用示例
    直接上代码了fromfastapiimportFastAPI,Requestimportuvicornapp=FastAPI()@app.post("/")asyncdefcreate_item(request:Rquest):json_post_raw=awaitrequest.json()#下面的代码就是根据取得的数据进行自己的相应解析answer={这里自己填......
  • 位运算(位于、位或、异或、按位取反、位左移、位右移)及相应示例
    一、位运算符运算符含义a&b位与aba^b异或~a按位取反a<<b位左移a>>b位右移二、运算符说明:把他们转化为二进制从低到高按位运算位与(&):当两位都为1时,结果为1,否则为0,在将得出的结果转化为十进制,得出位于的结果位或(|)当且仅当两位都为0时,结果为0,否则为1,在将得出的结果转化为十......
  • dockerfile示例
    FROMconetosVOLUMES['volumes01','volumes02']容器挂载相互同步先启动一个dockerrun-it--namedocker01centos:1.0在启动一个dockerrun-it--namedocker02--volumes-fromdocker01centos:1.0--volumes-from实现数据卷挂载同步相当于实现了继承(docker02ext......
  • 跨域JSONP原理及调用具体示例
    上篇博客介绍了同源策略和跨域访问概念,其中提到跨域常用的基本方式:JSONP和CORS。 那这篇博客就介绍JSONP方式。  JSONP原理  在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但img、iframe、script等标签是个例外,这......
  • 使用ShardingShpere来实现读写分离跟分库分表
    环境准备两个mysql集群,一主一从我们简单的用docker-compose来快速搭建一个version:'3'services:master1:image:mysql:5.7environment:MYSQL_ROOT_PASSWORD:123456ports:-"3307:3306"volumes:-./master1/data:/var/lib/mysql......