数据库分库分表
文章平均质量分 61
当当开源数据库分库分表中间件shardingjdbc介绍
bohu83
微信:bohu83
展开
-
ShardingSphere-JDBC 关键字问题
这里得到的提示就是,假设一个老库一堆表,只对个别表进行分表。引入sharding后虽然指定了分表的bindingTables,其余的走default-data-source就是默认不分表的。但是sharding会接管数据源,老表用默认的mybatis正常,sharding可能会报错。preciseAlgorithmClassName对应的是类名,注意yaml的缩进。这不是常见的没有配置sharding数据源导致empty的错误。使用sharding的时候,遇到了两个问题。...原创 2022-07-25 18:11:22 · 4600 阅读 · 0 评论 -
MYSQL 到MYSQL 分表数据迁移
MYSQL 到MYSQL分表 数据迁移,不停机迁移原创 2022-04-05 16:47:01 · 2334 阅读 · 0 评论 -
分库分表及shardingjdbc
一 序关于分库分表,网上有很多文章了,沈剑老师也有专门的文章介绍。数据库拆分简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负载的效果。 从理论到自己动手写demo还是有差别的。尤其是调研后发现shardingjdbc的官网例子不能直接用。有点错位的感觉:官网的文档是基于java的。实际上以yaml或者spri...原创 2018-05-11 19:11:29 · 1088 阅读 · 0 评论 -
shardingjdbc 2.0.3分库分表demo
shardingjdbc简介上一篇介绍了分库分表的理论,本篇基于官网的example整理下分库分表的demo。能跑起来,满足业务需求。官网地址:https://github.com/sharding-sphere/sharding-sphere-example下面是架构图,可见分库分表涉及的有分库路由,分库规则,分库关键字等。其余的框架给我们实现了。二 demo整合只需添加三个地方(pom.xml...原创 2018-05-12 15:12:34 · 2723 阅读 · 0 评论 -
一种orderID生成策略:
之前沈剑老师介绍过,从订单中心到多对多业务模式设计。常见两种方案:1 维护映射关系查询表。2. 基因分库法:orderid包含userid。有个类似的业务场景。贴个demo来验证下。整体算法类似于snowflake方法,有所调整,加入分库基因。public class Test { static Charset charset = Charset.forName("utf-8"); p...原创 2018-05-14 20:23:11 · 5326 阅读 · 0 评论 -
shardingjdbc分表后分页排序问题
通常的分页: select * from table order by ** limit offset,pagesize ;一 问题部分测试代码,模拟取3页的。 List<PaymentPay> plist =paymentPayService.selectByPage(queryPayDto); System.out.println(plist.size()); for...原创 2018-05-29 10:24:21 · 10817 阅读 · 0 评论 -
shardingjdbc 学习(一):源码总体结构
本文基于shardingjdbc 2.0.3版本。主要是整理sharding-jdbc-core。原创 2018-05-30 14:18:39 · 600 阅读 · 0 评论 -
shardingjdbc 学习(二)-API与分库分表
本文从官网的配置的 数据源入门,介绍支持的分库分表及与对应的API源码一 官网分库分表数据源配置1.1 核心概念: shardingjdbc 对数据分为yaml,spring,spring boot等多种方式。可以结合实际项目使用,我们实际采用spring,但是为了节省篇幅,把官网的yaml带注释的贴过来。dataSources: 数据源配置 <data_source_name> ...原创 2018-06-01 19:09:10 · 8109 阅读 · 1 评论 -
shardingjdbc 入门概念
官网:http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/concepts/LogicTable数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。ActualTable在分片的数据库中真实存在的物理表。即上个示例...原创 2018-06-01 17:28:37 · 2319 阅读 · 0 评论 -
shardingjdbc(三)-JDBC实现
一 序 看源码的过程,有两个维度,主要是根据执行过程去看。好处是可以有个大的流程图。对于有遗漏的点,可以按照宝结构再扫一遍,查漏补缺。上一篇主要整理了分库分表及主要暴露的API。本边继续从jdbc规范整理,从jdbc的实现,柔性事务,读写分离,路由,结果合并。最后整理模块最多也是核心的SQL解析。感谢芋道源码。http://www.iocoder.cn/Sharding-JDBC/jdb...原创 2018-06-03 22:14:52 · 1673 阅读 · 0 评论 -
shardingjdbc 学习(四)-SQL路由实现
一 序上一篇整理了jdbc的过程 ,update大概分两步,route跟执行。查询还有结果集归并。上面本篇继续从路由开始整理。大概分为:分库分表整体,route包源码分析。本文主要基于shardingjdbc 2.0.3版本整理。感谢芋道源码:http://www.iocoder.cn/Sharding-JDBC/sql-route-2/二 分库分表:这一部分算是第二篇API的补充吧。假设你阅读本...原创 2018-06-04 21:26:51 · 6766 阅读 · 0 评论 -
shardingjdbc (五)-SQL改写
一 序 上一篇在《SQL路由实现》 提了SQL改写。这里跟路由紧密结合,是在路由之后的步骤。路由解决了分库分表去查那些,改写负责一些如查询结果需要聚合,对SQL进行调整,生成分库分表后的执行SQL。二 sqltokenSQL改写的源码在core模块的io.shardingjdbc.core.rewrite目录下,分为SQLBuilder和SQLRewriteEngine。SQLToken,SQL...原创 2018-06-06 13:15:52 · 2306 阅读 · 0 评论 -
shardingjdbc (六)-SQL执行
一 序之前整理了SQL的路由,SQL的改写,按照jdbc的过程,接下来就是SQL执行了。SQL执行的源码在core模块下,下图所示。下图是查询流程,绿框是SQL执行过程。二 ExecutorEngine2.1 ListeningExecutorServiceSQL执行引擎,基于guava工具类提供的继承自 ExecutorService 的线程服务接口,提供创建 ListenableFuture ...原创 2018-06-06 20:17:06 · 3761 阅读 · 0 评论 -
shardingjdbc (七)-结果合并
一 序 单分片的SQL查询不需要合并,多分片的情况在各分片排序完后,Sharding-JDBC 获取到结果后,仍然需要再进一步排序。目前有 分页、分组、排序、聚合列、迭代 五种场景需要做进一步处理。 public ResultSet executeQuery() throws SQLException { ResultSet result; ...原创 2018-06-10 16:55:13 · 5078 阅读 · 2 评论 -
shardingjdbc (八)-groupby结果合并
4 GroupByStreamResultSetMergerGroupByStreamResultSetMerger,基于 Stream 方式分组归并结果集实现。 它继承自 OrderByStreamResultSetMerger,在排序的逻辑上,实现分组功能。实现原理也较为简单:public final class GroupByStreamResultSetMerger extends Ord...原创 2018-06-10 18:00:15 · 4213 阅读 · 0 评论 -
shardingjdbc (九)-最大努力型事务
一 序:Sharding-JDBC由于性能方面的考量,决定不支持强一致性分布式事务。目前支持的:Best efforts delivery transaction (已经实现).Try confirm cancel transaction (待定).最大努力送达型:在分布式数据库的场景下,相信对于该数据库的操作最终一定可以成功,所以通过最大努力反复尝试送达操作。实际上可以看看图上的流程,不管执行结...原创 2018-06-12 12:11:38 · 5105 阅读 · 5 评论