使用Shardingsphere进行分表操作

Shardingsphere介绍

Apache ShardingSphere 是一套开源的分布式数据库增强计算引擎,其通过可插拔架构构建基于数据库之上的生态系统,实现包括数据分片、弹性伸缩、加密脱敏等功能为代表的增强能力。shardingsphere官网以及github

分表原因

项目中存在一张设备定位信息记录的表,上线运行后,该表的数据量逐渐加大,虽然后来靠创建索引解决了出现慢查询的问题,但是数据量的问题还是需要解决的。所以决定对该表进行分表。

分表规则

根据当前的数据量以及将来的业务量,决定按照时间进行分表,每月一张表,分片键为定位时间。

分表过程
引入maven依赖
		<dependency>
			<groupId>org.apache.shardingsphere</groupId>
			<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
			<version>5.1.1</version>
		</dependency>

ShardingSphere的版本可以根据需要自行选择。

配置数据源
shardingsphere:
    mode:
      type: Memory # 运行模式类型
    props:
      sql-show: true # 是否输出sql
    datasource:
      names: ds #数据源名称, 如果有多个的话就用逗号分开
      ds:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://mysql/database?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
        username: dev
        password: qwer1234
分表规则配置
      sharding:
        tables:
          user:
            actual-data-nodes: ds.user_$->{2022..2022}0$->{1..9},ds.user_$->{2022..2022}$->{10..12} #标准分片表配置
            table-strategy:
              standard:
                sharding-column: create_time #分片键
                sharding-algorithm-name: myinterval # 分片算法名称 自定义
        sharding-algorithms:
          myinterval:
            type: INTERVAL #分片算法
            props:
              datetime-pattern: 'yyyy-MM-dd HH:mm:ss'
              datetime-lower: '2021-01-01 00:00:00'
              datetime-upper: '2025-01-01 00:00:00'
              sharding-suffix-pattern: 'yyyyMM'
              datetime-interval-amount: 1
              datetime-interval-unit: 'MONTHS'

关于“分片表配置”的语法,可参考行表达式 ,完成配置。
分片算法,可参考内置分片算法, 完成配置.

posted @ 2022-06-15 00:25  江南土特产代购  阅读(1022)  评论(1)    收藏  举报