• 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
  • 相关阅读:
    focus([[data],fn]) 当元素获得焦点时,触发 focus 事件。
    dblclick([[data],fn]) 当双击元素时,会发生 dblclick 事件。
    click([[data],fn]) 触发每一个匹配元素的click事件。
    change([[data],fn]) 当元素的值发生改变时,会发生 change 事件。
    blur([[data],fn]) 当元素失去焦点时触发 blur 事件。
    toggle([speed],[easing],[fn]) 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。
    hover([over,]out)
    triggerHandler(type, [data])
    trigger(type,[data]) 在每一个匹配的元素上触发某类事件。
    one(type,[data],fn) 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
  • 原文地址:https://www.cnblogs.com/h-z-y/p/14298295.html
Copyright © 2020-2023  润新知