zoukankan      html  css  js  c++  java
  • sharding-jdbc—分片策略:标准分片策略StandardShardingStrategy(1)

    一、标准分片策略StandardShardingStrategy

    • 提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持
    • StandardShardingStrategy只支持单分片键,提供PreciseShardingAlgorithm(精准分片)和RangeShardingAlgorithm(范围分片)两个分片算法
    • PreciseShardingAlgorithm是必选的,用于处理=和IN的分片
    • RangeShardingAlgorithm是可选的,用于处理BETWEEN AND分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEEN AND将按照全库路由处理
    • 如果需要使用RangeShardingAlgorithm,必须和PreciseShardingAlgorithm配套使用

    二、StandardShardingStrategy配置实现

    Sharding -jdbc 在使用分片策略的时候,与分片算法是成对出现的,每种策略都对应一到两种分片算法(不分片策略NoneShardingStrategy除外)

    分库分表最核心的两点SQL 路由  、 SQL 改写 

    SQL 路由:解析原生SQL,确定需要使用哪些数据库,哪些数据表

    Route (路由)引擎:为什么要用Route 引擎呢?

    在实际查询当中,数据可能不只是存在一台MYSQL服务器上,

    SQL 改写:将SQL 按照一定规则,重写FROM 的数据库和表名(Route 返回路由决定需要去哪些库表中执行SQL)

    application.properties 配置

       配置主要分为三个部分

    1. 配置数据源
    2. 分库配置  
    3. 分表配置
    # standard.precise-algorithm  标准策略 + 精准分片f算法 SQL 就是  = in
    # standard.range-algorithm   标准策略 + 范围分片算法 (主要是between  and )
    sharding.jdbc.datasource.names=ds0,ds1
     
    #分库配置
    sharding.jdbc.config.sharding.default-database-strategy.standard.sharding-column=id
     
    sharding.jdbc.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource
    sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
    sharding.jdbc.datasource.ds0.url=jdbc:mysql://192.168.8.162:5306/ds0?useUnicode=yes&characterEncoding=utf8
    sharding.jdbc.datasource.ds0.username=root
    sharding.jdbc.datasource.ds0.password=root
    sharding.jdbc.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
    sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
    sharding.jdbc.datasource.ds1.url=jdbc:mysql://192.168.8.162:5306/ds1?useUnicode=yes&characterEncoding=utf8
    sharding.jdbc.datasource.ds1.username=root
    sharding.jdbc.datasource.ds1.password=root
     
     
     
    # standard.precise-algorithm 标准策略下分片算法包含2个 precise + range,range是可选的,但是如果使用 range 就必须同 precise 配套一起使用
    sharding.jdbc.config.sharding.default-database-strategy.standard.precise-algorithm-class-name=com.demo.shardingjdbc.PreciseShardingDBAlgorithm
    sharding.jdbc.config.sharding.default-database-strategy.standard.range-algorithm-class-name=com.demo.shardingjdbc.RangeShardingDBAlgorithm
     
    # 设置绑定表
    sharding.jdbc.config.sharding.binding-tables=t_user
     
    # t_user分表配置
    # 如果分片键相同,可以直接在后面凭拼接 例如 :ds$->{0..1}.t_user_$->{0..1}
    sharding.jdbc.config.sharding.tables.t_user.actual-data-nodes=ds$->{0..1}.t_user_$->{0..1}
    sharding.jdbc.config.sharding.tables.t_user.table-strategy.standard.sharding-column=id
    sharding.jdbc.config.sharding.tables.t_user.table-strategy.standard.precise-algorithm-class-name=com.demo.shardingjdbc.PreciseShardingDBAlgorithm
    sharding.jdbc.config.sharding.tables.t_user.table-strategy.standard.range-algorithm-class-name=com.demo.shardingjdbc.RangeShardingDBAlgorithm
  • 相关阅读:
    JavaScript
    94.Binary Tree Inorder Traversal
    144.Binary Tree Preorder Traversal
    106.Construct Binary Tree from Inorder and Postorder Traversal
    105.Construct Binary Tree from Preorder and Inorder Traversal
    90.Subsets II
    78.Subsets
    83.Merge Sorted Array
    80.Remove Duplicates from Sorted Array II
    79.Word Search
  • 原文地址:https://www.cnblogs.com/h-z-y/p/14298295.html
Copyright © 2011-2022 走看看