国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ShardingSphere-JDBC 分庫分表

這篇具有很好參考價值的文章主要介紹了ShardingSphere-JDBC 分庫分表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

springBoot? 引入maven

            <dependency>
                <groupId>org.apache.shardingsphere</groupId>
                <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
                <version>4.0.0-RC1</version>
            </dependency>

application.yml配置

spring:
  shardingsphere:
    datasource:
      names: db1,db2
      db1:
        url: jdbc:mysql://localhost:3306/db1?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
      db2:
        url: jdbc:mysql://localhost:3306/db2?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
        username: root
        password: root
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
#      masterslave:
#        # 讀寫分離配置
#        load-balance-algorithm-type: round_robin #負載均衡策略,round_robin是輪循
#        # 最終的數(shù)據(jù)源名稱
#        name: dataSource #就是bean的名字
#        # 主庫數(shù)據(jù)源名稱
#        master-data-source-name: db1
#        # 從庫數(shù)據(jù)源名稱列表,多個逗號分隔
#        slave-data-source-names: db2
    sharding:
      default-database-strategy:
        inline:
          sharding-column: order_id #數(shù)據(jù)庫分片策略字段
          algorithm-expression: db${order_id % 2+1} # 配置t_order表分表策略
      tables:
        t_order:
          actual-data-nodes: db$->{1..2}.t_order_$->{0..3}  #配置t_order表分庫策略(inline-基于行表達式的分片算法)
          table-strategy:
            inline:  #只適合一個字段 
              sharding-column: order_id   #分表策略字段
              algorithm-expression: t_order_$->{order_id % 2}  #根據(jù)order_id%2 找到對應表名
          key-generator:
            column: order_id
            type: SNOWFLAKE
    props:
      sql:
        show: true #打印sql

table-strategy:指定表的分片策略,table-strategy有以下幾種策略

1 ) none 表示不分片,所有數(shù)據(jù)都存儲在同一個表中。

2 ) standard 表示使用標準分片策略,根據(jù)分片鍵的值進行范圍匹配,將數(shù)據(jù)路由到對應的分片表中。

? ? ? ? 對應StandardShardingStrategy,標準分片策略,根據(jù)分片鍵的值進行范圍匹配,將數(shù)據(jù)路由到對應的分片表中,提供對SQL語句中的=, >, <, >=, <=, IN和BETWEEN AND的分片操作支持。StandardShardingStrategy只支持單分片鍵,提供PreciseShardingAlgorithm和RangeShardingAlgorithm兩個分片算法。PreciseShardingAlgorithm是必選的,用于處理=和IN的分片。RangeShardingAlgorithm是可選的,用于處理BETWEEN AND, >, <, >=, <=分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEEN AND將按照全庫路由處理。

配置standard策略,我們需要實現(xiàn)PreciseShardingAlgorithm和RangeShardingAlgorithm接口來自定義自己的分片算法,如下所示

application.yml配置

      tables:
t_order:
actual-data-nodes: db$->{1..2}.t_order_$->{0..3} #配置t_order表分庫策略(inline-基于行表達式的分片算法)
table-strategy:
standard:
sharding-column: order_id
precise-algorithm-class-name: com.zjf.web.config.standard.MyTablePreciseShardingAlgorithm

分片類

@Component
@Slf4j
public class MyPreciseShardingAlgorithm implements PreciseShardingAlgorithm<Integer> {
    /**
     * @param tableNames 對應分片庫中所有分片表的集合
     * @param shardingValue 為分片屬性,logicTableName 為邏輯表,columnName 分片鍵,value 為從 SQL 中解析出來的分片鍵的值
     * @return
     */
    @Override
    public String doSharding(Collection<String> tableNames, PreciseShardingValue<Integer> shardingValue) {
        for (String tableName : tableNames) {
            // 取模算法,分片鍵 % 表數(shù)量
            String value = String.valueOf(shardingValue.getValue() % tableNames.size() );
            log.info("tableName {} value============ {}",tableName,value);
            if (tableName.endsWith(value)) {
                return tableName;
            }
        }
        throw new IllegalArgumentException("分片失敗,tableNames:" + tableNames);
    }
}

3 ) inline 表示使用行表達式分片策略,根據(jù)分片鍵的值通過表達式計算得到分片結(jié)果,將數(shù)據(jù)路由到對應的分片表中。

? ? ? ? ? ?對應InlineShardingStrategy,使用Groovy的表達式,提供對SQL語句中的=和IN的分片操作支持,只支持單分片鍵。對于簡單的分片算法,可以通過簡單的配置使用

      tables:
        t_order:
          actual-data-nodes: db$->{1..2}.t_order_$->{0..3}
          table-strategy:
            inline:
              sharding-column: order_id
              algorithm-expression: t_order_$->{order_id % 2}

4 ) complex 表示使用復合分片策略,可以同時使用多個分片鍵對數(shù)據(jù)進行分片計算,將數(shù)據(jù)路由到對應的分片表中。

? ? ? ? 對應ComplexShardingStrategy。復合分片策略。提供對SQL語句中的=, >, <, >=, <=, IN和BETWEEN AND的分片操作支持,ComplexShardingStrategy支持多分片鍵,如果表是多分片鍵的,那么需要使用該策略

? ? ? ?使用complex 策略,需要我們自定義一個ComplexShardingAlgorithm實現(xiàn)類,在該實現(xiàn)類定義相關(guān)分片算法

@Slf4j
public class MyComplexShardingAlgorithm implements ComplexKeysShardingAlgorithm {
    /**
     *
     * @param availableTargetNames 進行分片的表
     * @param shardingValue 
     * @return
     */
    @Override
    public Collection<String> doSharding(Collection availableTargetNames, ComplexKeysShardingValue shardingValue) {
        List<String> result = new ArrayList<>();

        // 獲取分片鍵列和對應的分片鍵值
        Map<String, Collection<Long>> columnNameAndShardingValuesMap = shardingValue.getColumnNameAndShardingValuesMap();

        // 遍歷分片鍵列和分片鍵值
        for (Map.Entry<String, Collection<Long>> entry : columnNameAndShardingValuesMap.entrySet()) {
            String columnName = entry.getKey();
            Collection<Long> shardingValues = entry.getValue();
            log.info("分片鍵:"+columnName);
            // 根據(jù)分片鍵列和分片鍵值進行分片邏輯的實現(xiàn)
            for (Long shardingVal : shardingValues) {
                for (Object availableTargetName : availableTargetNames) {
                    String tableName = availableTargetName.toString();
                    String value = String.valueOf(shardingVal % availableTargetNames.size() );
                    if (tableName.endsWith(value)) {
                        result.add(tableName) ;
                    }
                }
            }
        }
        return result;
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-805648.html

到了這里,關(guān)于ShardingSphere-JDBC 分庫分表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • shardingsphere5.x整合springboot分庫分表實戰(zhàn)

    shardingsphere5.x整合springboot分庫分表實戰(zhàn)

    官方文檔不同版本配置變更記錄:Spring Boot Start 配置 :: ShardingSphere pom.xml配置: 建表sql: yml配置: orders對象實體: OrdersMapper:? OrdersMapper.xml:? 單元測試:? 1、插入數(shù)據(jù)結(jié)果,按order_no分片取模,分片數(shù)為10,該數(shù)據(jù)被寫入表orders_2: 2、查詢數(shù)據(jù)sql,按order_no分片取模,分

    2024年02月07日
    瀏覽(23)
  • SpringBoot 整合 ShardingSphere4.1.1實現(xiàn)分庫分表

    SpringBoot 整合 ShardingSphere4.1.1實現(xiàn)分庫分表

    目錄 前言 一、ShardingSphere4.1.1的spring boot配置 二、ShardingSphere的分片策略 三、SpringBoot 整合 ShardingSphere4.1.1 四 、ShardingSphere實現(xiàn)分布式事務控制 ? ? ShardingSphere是一套開源的分布式數(shù)據(jù)庫中間件解決方案組成的生態(tài)圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(計劃中)這

    2024年02月08日
    瀏覽(24)
  • 基于springboot的ShardingSphere5.2.1的分庫分表的解決方案之分表解決方案(一)

    基于springboot的ShardingSphere5.2.1的分庫分表的解決方案之分表解決方案(一)

    5.2.1版本已經(jīng)于2022年10月18日正式發(fā)布了,相較于之前的5.0.0版本,該版本大幅度提升了性能,同時修復了大量的遺留ISSUE,且增加了很多新特性,因此在此版本發(fā)布之際,將原先基于5.0.0版本的例子基于5.2.1進行了一次梳理,接下來將為大家一 一梳理5.2.1版本的內(nèi)容。 打開我們

    2024年02月01日
    瀏覽(29)
  • ShardingSphere-JDBC學習

    springBoot? 引入maven application.yml配置 table-strategy:指定表的分片策略,table-strategy有以下幾種策略 1 ) none 表示不分片,所有數(shù)據(jù)都存儲在同一個表中。 2 ) standard 表示使用標準分片策略,根據(jù)分片鍵的值進行范圍匹配,將數(shù)據(jù)路由到對應的分片表中。 ? ? ? ? 對應StandardShardi

    2024年01月19日
    瀏覽(21)
  • Java微服務系列之 ShardingSphere - ShardingSphere-JDBC

    Java微服務系列之 ShardingSphere - ShardingSphere-JDBC

    ??作者主頁:青花鎖 ??簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??、Java微服務架構(gòu)公號作者?? ??簡歷模板、學習資料、面試題庫、技術(shù)互助 ??文末獲取聯(lián)系方式 ?? [Java項目實戰(zhàn)] 介紹Java組件安裝、使用;手寫框架等 [Aws服務器實戰(zhàn)] Aws Linux服務器上操作nginx、git、JDK、Vue等 [Java微服務

    2024年02月02日
    瀏覽(22)
  • springboot~sharding-jdbc實現(xiàn)分庫分表

    springboot~sharding-jdbc實現(xiàn)分庫分表

    當mysql數(shù)據(jù)庫單表大于1千萬以后,查詢的性能就不能保證了,我們必須考慮分庫,分表的方案了,還好,sharding-jdbc可以很優(yōu)雅的與springboot對接,完成對mysql的分庫和分表。 為了不影響其它小容量的表,所有添加了動態(tài)數(shù)據(jù)源,只對需要分庫分表的進行配置即可 com.baomidou:dy

    2024年02月06日
    瀏覽(16)
  • ShardingSphere-JDBC-若依框架集成

    ShardingSphere基礎(chǔ)知識、ShardingSphere-JDBC如何集成進若依框架中 使用的是若依框架(SpringBoot)前后端版本、動態(tài)數(shù)據(jù)源,可自行切換,默認數(shù)據(jù)源為達夢8 官網(wǎng)文檔地址:https://shardingsphere.apache.org/document/current/cn/overview/ 簡介 開源的分布式數(shù)據(jù)庫中間件解決方案組成的生態(tài)圈 關(guān)系

    2024年02月09日
    瀏覽(19)
  • springboot~對應sharding-jdbc實現(xiàn)分庫分表

    springboot~對應sharding-jdbc實現(xiàn)分庫分表

    當mysql數(shù)據(jù)庫單表大于1千萬以后,查詢的性能就不能保證了,我們必須考慮分庫,分表的方案了,還好,sharding-jdbc可以很優(yōu)雅的與springboot對接,完成對mysql的分庫和分表。 為了不影響其它小容量的表,所有添加了動態(tài)數(shù)據(jù)源,只對需要分庫分表的進行配置即可 com.baomidou:dy

    2024年02月06日
    瀏覽(18)
  • 【分庫分表】基于mysql+shardingSphere的分庫分表技術(shù)

    【分庫分表】基于mysql+shardingSphere的分庫分表技術(shù)

    目錄 1.什么是分庫分表 2.分片方法 3.測試數(shù)據(jù) 4.shardingSphere 4.1.介紹 4.2.sharding jdbc 4.3.sharding proxy 4.4.兩者之間的對比 5.留個尾巴 分庫分表是一種場景解決方案,它的出現(xiàn)是為了解決一些場景問題的,哪些場景喃? 單表過大的話,讀請求進來,查數(shù)據(jù)需要的時間會過長 讀請求過

    2024年03月12日
    瀏覽(47)
  • springboot整合sharding-jdbc實現(xiàn)分庫分表詳解

    目錄 一、為什么需要分庫分表 1.1 分庫分表的優(yōu)勢 二、分庫分表基本概念 2.1 垂直分表

    2024年02月05日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包