当前位置: 首页 > news >正文

工信部网站备案方法红豆网桂林论坛

工信部网站备案方法,红豆网桂林论坛,微网站需要什么技术,wordpress小蜜蜂插件目录 前言sharding-jdbc配置配置解析table-strategy分片策略1、standard2、none3、inline4、complex 前言 Spring Boot学习专栏: 传送门 sharding-jdbc配置 下面是Spring Boot项目下的ShardingSphere-JDBC数据分片配置 #数据源名称#xff0c;多数据源以逗号分隔 spring.s… 目录 前言sharding-jdbc配置配置解析table-strategy分片策略1、standard2、none3、inline4、complex 前言 Spring Boot学习专栏: 传送门 sharding-jdbc配置 下面是Spring Boot项目下的ShardingSphere-JDBC数据分片配置 #数据源名称多数据源以逗号分隔 spring.shardingsphere.datasource.namesds0,ds1#数据源相关连接信息 spring.shardingsphere.datasource.ds0.typeorg.apache.commons.dbcp.BasicDataSource spring.shardingsphere.datasource.ds0.driver-class-namecom.mysql.jdbc.Driver spring.shardingsphere.datasource.ds0.urljdbc:mysql://localhost:3306/ds0 spring.shardingsphere.datasource.ds0.usernameroot spring.shardingsphere.datasource.ds0.passwordspring.shardingsphere.datasource.ds1.typeorg.apache.commons.dbcp.BasicDataSource spring.shardingsphere.datasource.ds1.driver-class-namecom.mysql.jdbc.Driver spring.shardingsphere.datasource.ds1.urljdbc:mysql://localhost:3306/ds1 spring.shardingsphere.datasource.ds1.usernameroot spring.shardingsphere.datasource.ds1.passwordspring.shardingsphere.sharding.tables.t_order.actual-data-nodesds$-{0..1}.t_order$-{0..1} spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.sharding-columnorder_id spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.algorithm-expressiont_order$-{order_id % 2} spring.shardingsphere.sharding.tables.t_order.key-generator.columnorder_id spring.shardingsphere.sharding.tables.t_order.key-generator.typeSNOWFLAKE#默认分片策略当表没有设置单独的分片规则时就会使用默认的分片策略。 spring.shardingsphere.sharding.default-database-strategy.inline.sharding-columnuser_id spring.shardingsphere.sharding.default-database-strategy.inline.algorithm-expressionds$-{user_id % 2}配置解析 下面我们就来分析下上面的配置 1、数据源配置 首先需要配置数据源指定数据库连接信息spring.shardingsphere.datasource就是数据源的相关配置首先在names指定数据源名称然后再配置相应数据源的连接配置格式如下 spring.shardingsphere.datasource.data-source-name.type #数据库连接池类名称 spring.shardingsphere.datasource.data-source-name.driver-class-name #数据库驱动类名 spring.shardingsphere.datasource.data-source-name.url #数据库url连接 spring.shardingsphere.datasource.data-source-name.username #数据库用户名 spring.shardingsphere.datasource.data-source-name.password #数据库密码 spring.shardingsphere.datasource.data-source-name.xxx #数据库连接池的其它属性注每个data-source-name都需要配置 2、分片规则配置 针对每个需要进行分片的表需要配置相应的分片规则。这一部分是在spring.shardingsphere.sharding.tables进行配置下面我就上述例子进行解析 spring.shardingsphere.sharding.tables.t_order.actual-data-nodesds$-{0..1}.t_order$-{0..1}这个配置是 Sharding-JDBC 中指定实际数据节点的配置用于表示分片规则中具体的数据节点。它定义了表名为 t_order 的分片规则中的实际数据节点。在该属性值中使用了占位符和表达式来表示不同的数据节点。 1、t_order表示哪个表需要分片多个表需要相应进行配置actual-data-nodes表示配置数据节点固定值 2、ds$-{0…1} 表示数据源的名称其中 $-{0…1} 表示占位符可以被替换为 0 或 1这里表示有两个数据源分别为 ds0 和 ds1。 3、t_order$-{0…1} 表示表名的后缀其中 $-{0…1} 同样表示占位符可以被替换为 0 或 1这里表示有两个表名后缀分别为 t_order0 和 t_order1。 在上述配置中有两个数据源 ds0 和 ds1并且有两个表名后缀 t_order0 和 t_order1那么实际的数据节点将包括 ds0.t_order0、ds0.t_order1、ds1.t_order0、ds1.t_order1 四个。 spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.sharding-columnorder_idtable-strategy指定表的分片策略table-strategy有以下几种策略 none 表示不分片所有数据都存储在同一个表中。 standard 表示使用标准分片策略根据分片键的值进行范围匹配将数据路由到对应的分片表中。 inline 表示使用行表达式分片策略根据分片键的值通过表达式计算得到分片结果将数据路由到对应的分片表中。 complex 表示使用复合分片策略可以同时使用多个分片键对数据进行分片计算将数据路由到对应的分片表中。 具体的table-strategy使用我会在下面详细解释 spring.shardingsphere.sharding.tables.t_order.key-generator.columnorder_id用于指定生成主键的列名在上述配置中t_order 表的主键生成列配置为 order_id。这意味着在向 t_order 表插入数据时ShardingSphere 会自动生成主键并将生成的主键值赋给 order_id 列 shardingSphere 提供了多种主键生成策略如雪花算法、UUID 等可以根据业务需求选择合适的主键生成器。通过配置spring.shardingsphere.sharding.tables.t_order.key-generator.type可以指定生成策略。 spring.shardingsphere.sharding.default-database-strategyspring.shardingsphere.sharding.default-database-strategy为默认分片策略当表没有设置单独的分片规则时就会使用默认的分片策略 我们还可以使用spring.shardingsphere.sharding.default-data-source-name指定默认数据源名称。当未明确指定数据源名称时ShardingSphere 将使用该属性配置的数据源作为默认数据源。 spring.shardingsphere.sharding.default-data-source-nameds-0table-strategy分片策略 table-strategy指定表的分片策略下面详细介绍下table-strategy的几种策略 1、standard 对应StandardShardingStrategy标准分片策略根据分片键的值进行范围匹配将数据路由到对应的分片表中提供对SQL语句中的, , , , , IN和BETWEEN AND的分片操作支持。StandardShardingStrategy只支持单分片键提供PreciseShardingAlgorithm和RangeShardingAlgorithm两个分片算法。PreciseShardingAlgorithm是必选的用于处理和IN的分片。RangeShardingAlgorithm是可选的用于处理BETWEEN AND, , , , 分片如果不配置RangeShardingAlgorithmSQL中的BETWEEN AND将按照全库路由处理。 配置standard策略我们需要实现PreciseShardingAlgorithm和RangeShardingAlgorithm接口来自定义自己的分片算法如下所示 PreciseShardingAlgorithm实现类 Component public class MyTablePreciseShardingAlgorithm implements PreciseShardingAlgorithmInteger {/*** param tableNames 对应分片库中所有分片表的集合* param shardingValue 为分片属性logicTableName 为逻辑表columnName 分片键value 为从 SQL 中解析出来的分片键的值* return*/Overridepublic String doSharding(CollectionString tableNames, PreciseShardingValueInteger shardingValue) {for (String tableName : tableNames) {// 取模算法分片键 % 表数量String value String.valueOf(shardingValue.getValue() % tableNames.size() );if (tableName.endsWith(value)) {return tableName;}}throw new IllegalArgumentException(分片失败tableNames tableNames);}}配置文件进行进行配置 #配置分片键 spring.shardingsphere.sharding.tables.t_order.table-strategy.standard.sharding-columnorder_id #分片键策略 spring.shardingsphere.sharding.tables.t_order.table-strategy.standard.precise-algorithm-class-namecom.example.demo.shardingsphere.MyTablePreciseShardingAlgorithm2、none 对应NoneShardingStragey不分片策略SQL会被发给所有节点去执行 3、inline 对应InlineShardingStrategy使用Groovy的表达式提供对SQL语句中的和IN的分片操作支持只支持单分片键。对于简单的分片算法可以通过简单的配置使用 如我们例子的配置 spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.sharding-columnorder_id spring.shardingsphere.sharding.tables.t_order.table-strategy.inline.algorithm-expressiont_order$-{order_id % 2}shardingColumn指定用于分片计算的列名这里使用 order_id 字段。 algorithmExpression指定分片算法表达式这里使用了内联表达式 t_order$-{order_id % 2}。该表达式表示根据 order_id 的值进行取模运算结果为0时路由到 t_order0 表结果为1时路由到 t_order1 表。 4、complex 对应ComplexShardingStrategy。复合分片策略。提供对SQL语句中的, , , , , IN和BETWEEN AND的分片操作支持ComplexShardingStrategy支持多分片键如果表是多分片键的那么需要使用该策略 使用complex 策略需要我们自定义一个ComplexShardingAlgorithm实现类在该实现类定义相关分片算法如下所示 Slf4j public class MyComplexShardingAlgorithm implements ComplexKeysShardingAlgorithm {/**** param availableTargetNames 进行分片的表* param shardingValue * return*/Overridepublic CollectionString doSharding(Collection availableTargetNames, ComplexKeysShardingValue shardingValue) {ListString result new ArrayList();// 获取分片键列和对应的分片键值MapString, CollectionLong columnNameAndShardingValuesMap shardingValue.getColumnNameAndShardingValuesMap();// 遍历分片键列和分片键值for (Map.EntryString, CollectionLong entry : columnNameAndShardingValuesMap.entrySet()) {String columnName entry.getKey();CollectionLong shardingValues entry.getValue();log.info(分片键columnName);// 根据分片键列和分片键值进行分片逻辑的实现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;} }注ComplexKeysShardingValue 的 getColumnNameAndShardingValuesMap() 方法返回一个 MapString, Collection 对象用于获取分片键列和对应的分片键值集合。 这个方法的作用是获取所有的分片键列及其对应的分片键值其中键是分片键列的名称值是对应的分片键值的集合。通过遍历这个 Map你可以获得每个分片键列的分片键值集合并根据自己的业务逻辑进行相应的分片操作。 ComplexKeysShardingValue 的getColumnNameAndRangeValuesMap() 方法返回一个 MapString, Range 对象用于获取分片键列和对应的范围值。 这个方法的作用是获取所有的分片键列及其对应的范围值其中键是分片键列的名称值是对应的范围值。通过遍历这个 Map你可以获得每个分片键列的范围值并根据自己的业务逻辑进行相应的分片操作。 进行配置 #配置分片键 spring.shardingsphere.sharding.tables.t_order.table-strategy.complex.sharding-columnsorder_id,user_id #分片键策略 spring.shardingsphere.sharding.tables.t_order.table-strategy.complex.algorithm-class-namecom.example.demo.shardingsphere.MyComplexShardingAlgorithm
http://www.zqtcl.cn/news/300246/

相关文章:

  • 免费数据统计网站app推广拉新一手渠道
  • 网站推广效果不好原因zac seo博客
  • 高端网站设计合肥网站建设个人网站建设公
  • 廊坊建站模板系统做效果图的网站
  • 建网站打开需要验证四川省成都市建设厅官网
  • 网站文章列表如何排版珠海建设工程信息网站
  • 郑州个人做网站建设银行招聘网站
  • 杭州网站设计公司联系亿企邦网站怎么上百度
  • 网站建设的未来网站不备案访问
  • 网站改版效果图怎么做网站建设的五个基本要素
  • 河南建站网站做o2o网站需要多少钱
  • 重庆企业网站定制开发公司wordpress用户页
  • 电子商务网站seo网站规划与设计方向
  • 外贸双语网站源码wordpress 柚子
  • 隆昌市住房和城乡建设厅网站html5网页成品代码
  • 泉州丰泽建设局网站wordpress设置logo和公司名
  • 网页与网站设计实验总结网上商城互联网网站开发
  • 学院宣传网站建设简介郑州加盟网站建设
  • 上海网站建设sheji021wordpress ssl 图片
  • 网站管理人员队伍建设说明材料搞笑网站建设目的和意义
  • 网站建设应该考虑哪些问题如何规划网站栏目
  • 照片网站模版广告设计软件哪个好用
  • 商城网站前端更新商品天天做吗惠州网络营销公司
  • 买高端品牌网站建设公司做网站比较好的平台
  • 找个网站这么难2021公司名称大全好听
  • 网站要实名认证网站建设 简易合同
  • 网站建站公司费用建设网站改版
  • 做网站php与python新渝网门户网
  • 响应式网站建设外文文献中介做网站的别打电话
  • 奥迪网站建设策划书wordpress取消评论审核