当前位置: 首页 > news >正文

ShardingSphere--02--数据分片

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 数据分片
        • https://shardingsphere.apache.org/document/current/cn/features/sharding/
    • 1.分片
      • 垂直分片
      • 水平分片
    • 2.核心概念
      • 2.1 表
      • 2.2 数据节点
      • 2.3 分片
    • 3.sql使用规范
      • 3.1 支持项
      • 3.2 不支持项
      • 3.2 示例
    • 4.分布式主键
    • 5.yml配置
      • https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/yaml-config/
      • 参数解释
      • 操作步骤
      • 配置示例


数据分片

https://shardingsphere.apache.org/document/current/cn/features/sharding/

在这里插入图片描述

1.分片

在这里插入图片描述

垂直分片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

水平分片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.核心概念

2.1 表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 数据节点

在这里插入图片描述
在这里插入图片描述

2.3 分片

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.sql使用规范

在这里插入图片描述

3.1 支持项

在这里插入图片描述
在这里插入图片描述

3.2 不支持项

不支持CASE WHEN、HAVING、UNION (ALL),有限支持子查询

在这里插入图片描述

在这里插入图片描述

3.2 示例

支持的SQL
在这里插入图片描述
在这里插入图片描述
不支持的SQL
在这里插入图片描述
DISTINCT支持情况详细说明
在这里插入图片描述
在这里插入图片描述

4.分布式主键

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.yml配置

https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/yaml-config/

在这里插入图片描述

参数解释

rules:
- !SHARDING
  tables: # 数据分片规则配置
    <logic_table_name> (+): # 逻辑表名称
      actualDataNodes (?): # 由数据源名 + 表名组成(参考 Inline 语法规则)
      databaseStrategy (?): # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 分片算法名称
        complex: # 用于多分片键的复合分片场景
          shardingColumns: # 分片列名称,多个列以逗号分隔
          shardingAlgorithmName: # 分片算法名称
        hint: # Hint 分片策略
          shardingAlgorithmName: # 分片算法名称
        none: # 不分片
      tableStrategy: # 分表策略,同分库策略
      keyGenerateStrategy: # 分布式序列策略
        column: # 自增列名称,缺省表示不使用自增主键生成器
        keyGeneratorName: # 分布式序列算法名称
      auditStrategy: # 分片审计策略
        auditorNames: # 分片审计算法名称
          - <auditor_name>
          - <auditor_name>
        allowHintDisable: true # 是否禁用分片审计hint
  autoTables: # 自动分片表规则配置
    t_order_auto: # 逻辑表名称
      actualDataSources (?): # 数据源名称
      shardingStrategy: # 切分策略
        standard: # 用于单分片键的标准分片场景
          shardingColumn: # 分片列名称
          shardingAlgorithmName: # 自动分片算法名称
  bindingTables (+): # 绑定表规则列表
    - <logic_table_name_1, logic_table_name_2, ...> 
    - <logic_table_name_1, logic_table_name_2, ...> 
  defaultDatabaseStrategy: # 默认数据库分片策略
  defaultTableStrategy: # 默认表分片策略
  defaultKeyGenerateStrategy: # 默认的分布式序列策略
  defaultShardingColumn: # 默认分片列名称
  
  # 分片算法配置
  shardingAlgorithms:
    <sharding_algorithm_name> (+): # 分片算法名称
      type: # 分片算法类型
      props: # 分片算法属性配置
      # ...
  
  # 分布式序列算法配置
  keyGenerators:
    <key_generate_algorithm_name> (+): # 分布式序列算法名称
      type: # 分布式序列算法类型
      props: # 分布式序列算法属性配置
      # ...
  # 分片审计算法配置
  auditors:
    <sharding_audit_algorithm_name> (+): # 分片审计算法名称
      type: # 分片审计算法类型
      props: # 分片审计算法属性配置
      # ...

- !BROADCAST
  tables: # 广播表规则列表
    - <table_name>
    - <table_name>

操作步骤

  1. 在 YAML 文件中配置数据分片规则,包含数据源、分片规则、全局属性等配置项;
  2. 调用 YamlShardingSphereDataSourceFactory 对象的 createDataSource 方法,根据
    YAML 文件中的配置信息创建 ShardingSphereDataSource。

配置示例

数据分片 YAML 配置示例如下:

dataSources:
  ds_0:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password:
  ds_1:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password:

rules:
- !SHARDING
  tables:
    t_order: 
      actualDataNodes: ds_${0..1}.t_order_${0..1}
      tableStrategy: 
        standard:
          shardingColumn: order_id
          shardingAlgorithmName: t_order_inline
      keyGenerateStrategy:
        column: order_id
        keyGeneratorName: snowflake
      auditStrategy:
        auditorNames:
          - sharding_key_required_auditor
        allowHintDisable: true
    t_order_item:
      actualDataNodes: ds_${0..1}.t_order_item_${0..1}
      tableStrategy:
        standard:
          shardingColumn: order_id
          shardingAlgorithmName: t_order_item_inline
      keyGenerateStrategy:
        column: order_item_id
        keyGeneratorName: snowflake
    t_account:
      actualDataNodes: ds_${0..1}.t_account_${0..1}
      tableStrategy:
        standard:
          shardingAlgorithmName: t_account_inline
      keyGenerateStrategy:
        column: account_id
        keyGeneratorName: snowflake
  defaultShardingColumn: account_id
  bindingTables:
    - t_order,t_order_item
  defaultDatabaseStrategy:
    standard:
      shardingColumn: user_id
      shardingAlgorithmName: database_inline
  defaultTableStrategy:
    none:
  
  shardingAlgorithms:
    database_inline:
      type: INLINE
      props:
        algorithm-expression: ds_${user_id % 2}
    t_order_inline:
      type: INLINE
      props:
        algorithm-expression: t_order_${order_id % 2}
    t_order_item_inline:
      type: INLINE
      props:
        algorithm-expression: t_order_item_${order_id % 2}
    t_account_inline:
      type: INLINE
      props:
        algorithm-expression: t_account_${account_id % 2}
  keyGenerators:
    snowflake:
      type: SNOWFLAKE
  auditors:
    sharding_key_required_auditor:
      type: DML_SHARDING_CONDITIONS

- !BROADCAST
  tables:
    - t_address

props:
  sql-show: false

相关文章:

  • 基于嵌入式linux的数据库:SQLite
  • 分片机制如何理解?
  • Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果
  • 统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?
  • Golang笔记——Interface类型
  • JavaScript获取DOM元素语法总结(getElementsByName()、querySelector()、querySelectorAll())
  • 网络安全漏洞管理要求 网络安全产品漏洞
  • OC高级编程之GCD
  • C语言数据结构—二叉树的链式结构实现
  • 【ECMAScript6】
  • 【知识】PyTorch中不同优化器的特点和使用
  • Visual Whole-Body for Loco-Manipulation论文复现
  • hab 通信
  • 爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用
  • 另外一个用于测试内存屏障差异的 C 语言示例程序(自己测试)
  • springboot集成jackson-dataformat-xml实现发送XML请求和XML响应参数处理
  • docker离线安装记录
  • 人工智能基础知识笔记一:核函数
  • 使用 BFS 解决 最短路问题
  • springboot005学生心理咨询评估系统(源码+数据库+文档)
  • 《让世界爱中国》新书发布,探讨大变局下对外讲好中国故事
  • 上海文化馆服务宣传周启动,为市民提供近2000项活动
  • 竞彩湃|英超欧冠悬念持续,纽卡斯尔诺丁汉能否拿分?
  • 从良渚到三星堆:一江水串起了5000年的文明对话
  • 2025全球城市科技传播能力指数出炉,上海位列第六
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业