ShardingJdbc
文章平均质量分 95
ShardingJdbc(使用+源码)
jadebai
Java成长道路的记录
展开
-
ShardingJdbc2.X学习总结系列(十三):源码解析—SQL解析之Insert语句的values解析
这一篇我们主要具体看一下Insert语句的values解析public void parse(final InsertStatement insertStatement) { Collection<Keyword> valueKeywords = new LinkedList<>(); valueKeywords.add(Default...原创 2019-08-20 19:31:59 · 496 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(十二):源码解析—SQL解析之表名解析
这篇文章我们会详细看一下SQL里面表名解析的详细过程。不管是增删改查最终表结构的解析都是走TableReferencesClauseParser这个解析类,我们看一下这个类的结构图我们看一下这个parse方法的整体调用流程public final void parse(final SQLStatement sqlStatement, final boolean isSingleT...原创 2019-08-18 18:49:12 · 1233 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(十一):源码解析—事务
事务:恢复和并发控制的基本单位。具有ACID(原子性、一致性、隔离性、持久性)四大属性。数据库事务:可以是一条sql或者一组sql的执行,当事务包含多条sql时,有一个执行出现异常,就会全部回滚。但是ShardingJdbc是主要应用在分库分表上,当这个时候在加上事务的话,就会使事务变得很复杂。ShardingJdbc默认是没有事务的,如果配置了事务也是弱事务,我们看一下官方文档对于弱...原创 2019-08-08 21:22:17 · 400 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(十):源码解析—读写分离(主从)
前面9篇文章主要是介绍了,shardingJdbc的介绍,使用,包括分库分表的源码解读,我们知道shardingJdbc不仅仅只有做分库分表的功能,还可以读写分离,并且可以支持分库分表+读写分离联合使用,这篇的话我们就来了解一下简单的读写分离是怎么实现的。shardingJdbc读写分离支持1、提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用。2、同一线...原创 2019-08-08 21:22:26 · 443 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(九):源码解析—SQL执行结果合并
从前面几篇文章,我们了解了从SQ解析---》SQL路由--》SQL改写--》SQL执行的整体过程。这一篇主要是讲解执行的结果如何变成正规结果相应到调用方的。这里不同的执行方法处理的方式(execute , executeUpdate , executeQuery )也是不一样的1.execute 方法返回的是boolean 类型,处理比较简单public boolean exec...原创 2019-08-05 11:41:26 · 248 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(八):源码解析—SQL执行
前面几篇文章介绍了SQL解析,SQL路由,SQL改写的过程,包括组装成最后的Collection<PreparedStatementUnit>这篇文章就开始介绍SQL的执行了public boolean execute() throws SQLException { try { ① Collection<PreparedState...原创 2019-08-04 19:40:09 · 209 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(七):源码解析—SQL执行前准备
在通过解析,路由,改写之后还需要做一步处理,把 生成的SQLRouteResult的对象转换成 Collection<PreparedStatementUnit>private Collection<PreparedStatementUnit> route() throws SQLException { Collection<PreparedSt...原创 2019-08-04 18:08:29 · 165 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(六):源码解析—SQL改写
前两篇我们介绍了SQL解析和SQL路由两个功能,这篇文章我们主要是介绍SQL改写。1.首先还是介绍一些关键词语1.SQL 改写:改写 SQL,解决分库分表后,查询结果需要聚合,需要对 SQL 进行调整,例如分页SQLToken,SQL标记对象接口。SQLRewriteEngine 基于 SQLToken 实现 SQL改写。SQL解析器在 SQL解析过程中,很重要的一个目的是标记需要SQ...原创 2019-08-04 16:30:03 · 257 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(五):源码解析—SQL路由
上篇主要介绍了SQL解析的过程,这一篇主要讲解的是SQL路由首先介绍几个重要的名词+内部实现图1.TableRule:表规则配置对象 1.1DataNode :静态分库分表数据单元 数据分片的最小单元,由数据源名称和数据表组成。 例:ds_1.t_order_0。配置时默认各个分片数据库的表结构均相同, ...原创 2019-08-03 17:35:27 · 1302 阅读 · 1 评论 -
ShardingJdbc2.X学习总结系列(四):源码解析—SQL解析
1.解析包整体介绍1.5.0M1版本以后采用的是自研的解析引擎,支持join、aggregation、order by、group by、limit、or;目前不支持union、部分子查询、函数内分片等不太应在分片场景中出现的SQL解析。ORM采用的是mybatis 我们可以知道mybatis执行的流程 获取prepareStatement pri...原创 2019-01-31 16:56:23 · 677 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(三):源码解析—整体流程
整体介绍条件:数据库为mysql ORM为mybatismybatis执行顺序为 :1.获取DefaultSqlSession2.生成Executor3.获取StatementHandler4.调用StatementHandler,通过connection获取Statement5.根据SQL请求执行Statement相应的方法6.调用ResultSetHandl...原创 2019-01-31 16:30:46 · 359 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(二):使用
1.maven 引入依赖jar包<dependency> <groupId>io.shardingjdbc</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>2.0.3</version></de...原创 2019-01-31 16:19:55 · 620 阅读 · 0 评论 -
ShardingJdbc2.X学习总结系列(一):介绍
1.简介Sharding-JDBC是当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架,实现透明化数据库分库分表访问。 它直接封装JDBC协议,可以理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。 它定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,无proxy代理层,无需额外部署,无...原创 2019-01-31 16:06:20 · 1528 阅读 · 0 评论