![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DataSource
懒惰的小强!
这个作者很懒,什么都没留下…
展开
-
Sharding-jdbc之分片
sharding-jdbc的作用就不必做过多的解释了,主要用途是分库分表;首先先了解下分库分表的策略吧。1 分片键分片键即在分库分表时根据表中的某一个或者多个字段为依据,以一定的逻辑进行分割,例如根据自增的主键求模的规则进行分片等。2 分片算法分片算法结合分片键对具体的数据进行分片;支持通过=、BETWEEN和IN分片。分片算法需要应用方开发者自行实现,可实现的灵活度非常高。分片算法有四种...原创 2019-09-18 09:27:34 · 2298 阅读 · 0 评论 -
sharding-jdbc之解析引擎
sharding-jdbc对于sql的解析需要依赖解析引擎,解析过程会经历两大过程:1 通过G4规则的解析器生成抽象语法树;2 通过SQL解析引擎输出解析结果,这一步包含SQL提取、SQL填充、SQL优化。抽象语法树解析过程分为词法解析和语法解析。 词法解析器用于将SQL拆解为不可再分的原子符号,称为Token。并根据不同数据库方言所提供的字典,将其归类为关键字,表达式,字面量和操作符。 ...原创 2019-09-19 09:31:32 · 613 阅读 · 0 评论 -
sharding-jdbc之路由引擎
根据解析上下文匹配数据库和表的分片策略,并生成路由路径。 对于携带分片键的SQL,根据分片键的不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是IN)和范围路由(分片键的操作符是BETWEEN)。 不携带分片键的SQL则采用广播路由。分片策略通常可以采用由数据库内置或由用户方配置。 数据库内置的方案较为简单,内置的分片策略大致可分为尾数取模、哈希、范围、标签、时间等。 由...原创 2019-09-20 19:13:27 · 981 阅读 · 0 评论 -
sharding-jdbc之改写引擎
初始SQL经历了解析和路由之后需要将SQL改写,根据分片规则指定需要对哪个库哪个表执行相应的SQL,即正确性改写:在包含分表的场景中,需要将分表配置中的逻辑表名称改写为路由之后所获取的真实表名称。仅分库则不需要表名称的改写。除此之外,还包括补列和分页信息修正等内容。改写引擎的整体结构划分如下图所示:上图中的整体结构能够清晰的看到SQL改写的类型,下面即从源码中分析各种改写的原理。public...原创 2019-09-23 09:17:29 · 462 阅读 · 0 评论 -
sharding-jdbc之执行引擎
ShardingSphere采用一套自动化的执行引擎,负责将路由和改写完成之后的真实SQL安全且高效发送到底层数据源执行。 它不是简单地将SQL通过JDBC直接发送至数据源执行;也并非直接将执行请求放入线程池去并发执行。它更关注平衡数据源连接创建以及内存占用所产生的消耗,以及最大限度地合理利用并发等问题。 执行引擎的目标是自动化的平衡资源控制与执行效率。1 准备阶段-SQLExecutePre...原创 2019-09-24 16:20:44 · 1178 阅读 · 0 评论 -
sharding-jdbc之归并引擎
经过执行引擎的处理,返回查询的结果集需要进行归并整理,才能正确的相应客户端的调用。ShardingSphere支持的结果归并从功能上分为遍历、排序、分组、分页和聚合5种类型,它们是组合而非互斥的关系。 从结构划分,可分为流式归并、内存归并和装饰者归并。流式归并和内存归并是互斥的,装饰者归并可以在流式归并和内存归并之上做进一步的处理。由于从数据库中返回的结果集是逐条返回的,并不需要将所有的数据一...原创 2019-09-25 19:17:17 · 916 阅读 · 0 评论