序言

在前文的基础上继续梳理一下分片的相关信息.基于shardingsphere-sharding-api:jar:5.2.1的源码,感觉ShardingJdbc的版本变动频繁且比较大cuiyaonan2000@163.com

切入口是如下的内容,吐槽下官网的API文档不太够能把事情说清楚:

分片算法

从上面的自定义分片的可选类型我们就知道了,也不是完全的自定义,还是要按照官网的要求来操作的,能选择自定义分片策略只有STANDARD,COMPLEX,HINT这3中类型的自定义策略,对应到代码上就是如下的内容;

如上的接口限制了我们能够自定分片策略的范围.如下就是ShardingJdbc内置的一些分片算法了,这些算法都是实现了上面的接口cuiyaonan2000@163.com

官网也有一个列表展示了所有的内置算法类: 数据分片 :: ShardingSphere

InlineShardingAlgorithm

我们以STANDARD类型的InlineShardingAlgorithm算法为引子来看一下,它的实现.

首先它实现了StandardShardingAlgorithm接口,表示他是Standard类型的算法.

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License.  You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.apache.shardingsphere.sharding.api.sharding.standard;import org.apache.shardingsphere.sharding.spi.ShardingAlgorithm;import java.util.Collection;/*** Standard sharding algorithm.* * @param <T> class type of sharding value*/
public interface StandardShardingAlgorithm<T extends Comparable<?>> extends ShardingAlgorithm {/*** Sharding.* * @param availableTargetNames available data sources or table names* @param shardingValue sharding value* @return sharding result for data source or table name*/String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<T> shardingValue);/*** Sharding.** @param availableTargetNames available data sources or table names* @param shardingValue sharding value* @return sharding results for data sources or table names*/Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<T> shardingValue);
}

如上就是Standard类型的算法需要实现的接口了,通过我们小学六年级英语可以知道,这2个方法就是用来告诉程序,该选择哪个数据库或者哪个表的的主要方法cuiyaonan2000@163.com

看一下示例,我们成功运行代码后打个断点看下里面的算法

由上可见:

  • availableTargetNames: 是可以选择数据库的名称,在我们配置文件设置的2个数据源m1和m2
  • shardingValue: 就是我们的分片字段信息,里面有针对逻辑表明cui,字段名称id,value:1597852299895095298是要插入的id的值.

同一个方法如上是针对分库的选择,如下分表的选择(就是同一个方法用来进行分库分表的选择)

ShardingJdbcⅡ相关推荐

  1. Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来自:CSDN,作者:邋遢的流浪剑客 链接:https://blog.csdn.net/qq_40378034/article/de ...

  2. 分库分表之 Sharding-JDBC 中间件,看这篇真的够了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本文大纲如下 Sharding-JDBC 的基本用法和基本 ...

  3. 数据量大了一定要分表,分库分表 Sharding-JDBC 入门与项目实战

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:juejin.im/post/684490418236581 ...

  4. Spring Boot集成Sharding-jdbc + Mybatis-Plus实现分库分表

    来源:https://blog.csdn.net/Macky_He/article/details/95754402 作者:Macky_He 一. Sharding-jdbc简介 Sharding-j ...

  5. Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现数据分表+读写分离

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 读写分离 在上一篇文章介绍了如何使用Sharing-JDBC实现数据库的读写分离.读写分离的好处 ...

  6. Sharding-jdbc教程:Springboot整合sharding-jdbc实现读写分离

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! Sharding-JDBC简介 Sharding-JDBC是的分布式数据库中间件解决方案.Sha ...

  7. Sharding-jdbc教程:Mysql数据库主从搭建

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 这是系列文章Sharding-jdbc文章的第一篇,本篇文章主要讲述如何搭建Mysql的主从.搭 ...

  8. 一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...

  9. Sharding-JDBC:垂直拆分怎么做?

    来自:猿天地 经过读写分离的优化后,小王可算是轻松了一段时间,读写分离具体的方案请查看这篇文章:Sharding-JDBC:查询量大如何优化? 可是好景不长,业务发展是在太快了.数据库中的数据量猛增, ...

  10. Spring boot 实战 利用 Sharding-jdbc实现数据库的读写分离

    读写分离原理的什么这里就不讲了,直接来看看使用 sharding-jdbc 来实现读写分离 快速入门分库分表中间件 Sharding-JDBC 对于 Sharding-JDBC 还不了解的可以参考我以 ...

最新文章

  1. 深入浅出Yolo系列之Yolov3amp;Yolov4核心基础知识完整讲解
  2. 用最骚的话让你彻底弄懂贝叶斯!
  3. Redux 学习总结 (React)
  4. C Primer Plus 第5章 运算符、表达式和语句 编程练习及答案
  5. 左连接 和右链接的区别,内连接和外连接的区别
  6. boost库 数组智能指针scoped_array
  7. AtCoder - 4172 Modulo Summation 贪心
  8. java没有timer类_Java中的Java.util.Timer类 - Break易站
  9. c语言一年日历程序,c语言日历程序
  10. [elixir! #0024] 引擎盖下, `Channel.push` 如何运作
  11. 163邮箱无法通过POP3接收邮件
  12. 详析百度“原创保护”使用规范,及如何推送原创文章链接?
  13. 熟悉java的写什么毕业设计_计算机专业Java相关的毕业论文该如何写?
  14. Flex 绘制圆形或椭圆并填充图片
  15. 介绍NPOI 的颜色卡、名称以及索引
  16. 2021年「博客之星」参赛博主:尔嵘
  17. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP1补丁 32位 官方免费版(附安装教程)...
  18. 【Antd Design Upload】 antd Upload 上传时只有Uploading状态,无法获取返回的数据
  19. 精通Javascript+jQuery视频下载
  20. 如何安装 Microsoft Office 兼容包,以便能够使用早期版本的 Excel、PowerPoint 和 Word 来打开和保存来自 2007 Office 程序的文件

热门文章

  1. android内存分析命令,Android内存问题分析一些命令
  2. 协方差公式性质证明过程_一个方差公式的多种证明
  3. Golang - 协程池 ants.NewPoolWithFunc使用介绍
  4. 015 Ceph的集群管理_1
  5. 在css中用3D效果实现图片墙,CSS3实现3D效果的图片墙_html/css_WEB-ITnose
  6. python爬虫(三)12306自动抢票--- selenium
  7. UL94级塑料的燃烧测试
  8. HistoryInFilm for mac(实用的电影分类视频软件)
  9. 用户权限管理——Djiango
  10. html 页面如何引用阿里云图标?