ShardingSphere 水平サブテーブル

アプリケーションシナリオ

データテーブルは、各プロジェクトグループのデータ情報を受け取るために使用されます。データのアップロード頻度は非常に高く、データ量は 1 週間で 10 万件以上に達します。データ
テーブルsys_orderの単純な構造は次のとおりです
ここに画像の説明を挿入
。データ量が増加すると、プロジェクト データベース テーブルのデータ量が大きすぎます。shardingSphere を使用して groupId フィールドに従って水平テーブル分割を実行する必要があり、各プロジェクト グループがテーブルに対応するため、管理が便利であり、データ テーブルへの負担が軽減されます。

実装手順

Maven 依存関係をインポートする

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc-core</artifactId>
    <version>${shardingsphere.version}</version>
</dependency>

yamlファイルを設定する

spring:
  shardingsphere:
    mode:
      # 运行模式类型。可选配置:内存模式 Memory、单机模式 Standalone、集群模式 Cluster
      type: Memory
    props:
      #是否在日志中打印 SQL。
      #打印 SQL 可以帮助开发者快速定位系统问题。日志内容包含:逻辑 SQL,真实 SQL 和 SQL 解析结果。
      #如果开启配置,日志将使用 Topic ShardingSphere-SQL,日志级别是 INFO。 false
      sql-show: true
      #是否在日志中打印简单风格的 SQL。false
      sql-simple: false
      #用于设置任务处理线程池的大小。每个 ShardingSphereDataSource 使用一个独立的线程池,同一个 JVM 的不同数据源不共享线程池。
      executor-size: 20
      #次查询请求在每个数据库实例中所能使用的最大连接数。1
      max-connections-size-per-query: 1
      #在程序启动和更新时,是否检查分片元数据的结构一致性。
      check-table-metadata-enabled: false
      #在程序启动和更新时,是否检查重复表。false
      check-duplicate-table-enabled: false
    datasource:
      names: ds0
      ds0:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/db0
        username: root
        password: root
    rules:
      sharding: #ShardingSphere-JDBC全局序列配置规则
        key-generators:
          # 雪花算法生成数据库id,不使用可以不设置
          snowflake:
            type: SNOWFLAKE
            props:
              worker-id: 123
        #分片算法配置
        sharding-algorithms:
          ## 分片算法名称
          fenpian-table-1:
            #对应 Override getType
            type: MOD # 使用取模分片算法
            props:
              sharding-count: 20 # 取模数量,暂时分20张表吧
        
        tables:
          # 逻辑表名称
          sys_order:
            # 由数据源名 + 表名组成(参考 Inline 语法规则)
            actual-data-nodes: ds0.sys_order${
    
    0..20}
            # 分表策略,缺省表示使用默认分库策略,以下的分片策略只能选其一
            table-strategy:
              #standard: # 用于单分片键的标准分片场景
              standard:
                #数据库的键
                shardingColumn: group_id
                sharding-algorithm-name: fenpian-table-1
            # 分库策略,缺省表示使用默认分库策略,以下的分片策略只能选其一

主要な設定手順

共有部分はテーブルを分割するために使用する必要があるアルゴリズムで、1 つは ID の生成に使用されるスノーフレーク アルゴリズム、もう 1 つはテーブルの分割で使用されるモジュロ アルゴリズムです
ここに画像の説明を挿入
。分割テーブルは、データ ソースと分割戦略によって使用されます。この使用はライブラリを一時的に分割するものではありません
ここに画像の説明を挿入

フォローアップテスト

追加を待っています...

おすすめ

転載: blog.csdn.net/weixin_49363689/article/details/132249073