初识shardingsphere-jdbc

本文介绍了ShardingSphere-JDBC的基本概念和工作原理,通过官方示例代码展示了其如何根据配置的路由规则,在sql执行前确定实际的数据源,实现数据分片。Sharding-JDBC通过解析SQL并应用路由规则,动态生成执行上下文,最终由jdbc执行SQL,达到分布式数据操作的目的。
摘要由CSDN通过智能技术生成

简介

    趁着seata的热乎气,继续谈谈分布式数据的问题,今天谈谈对shardingsphere-jdbc的初识。

分析

    先看看对shardingsphere-jdbc的整体认识,看看来自官网的一张图。

     第一想法是什么?图画的不错,不不,好像是拿着Sharding-JDBC取代了jdbc,通过Sharding-JDBC来访问数据库,靠猜不行看看代码怎么搞的,这种入门程序就不多说了,直接到官网截一段使用的代码片段。

    呀哈,确定过眼神好像见过这个图,没毛病老铁,seata也是到DataSource这里来搞事情。稍等片刻,来个你画我猜,是不是这个样子的,结合代码配置来看,配置了多个数据源,并配置了对应的规则,这么一来岂不就是,对要执行的sql进行解析,看看应该放到哪个数据源去执行,这不就达到目的了吗。比如有根据id奇偶来路由到不同库来执行,id是奇数就符合了数据源1的规则,那就定位了数据源1,那就到数据源1拿连接执行sql,perfect,还是那句话靠猜不踏实啊,看看代码去。

ShardingDataSourceFactory

   这里看到ShardingDataSourceFactory搞了一个ShardingDataSource,看看怎么取连接。

ShardingDataSource

     这里看到ShardingDataSource搞了一个ShardingConnection,再去搞一个Statement。

ShardingConnection

     这里看到ShardingConnection搞了一个ShardingPreParedStatement,最后看一张整体关系图。

    接下来就看看sql的执行吧。

ShardingPreParedStatement

     简单看看这里的逻辑,prepare、executeQuery。

BasePrepareEngine

    既然是为了得到ExecutionContext,先瞧瞧它这里的SqlStatementContext和ExecutionUnits。

    这里意图就很清晰了,有个这个组件和ShardingPreParedStatement执行一个sql的全部条件就都具备了,statement、sql、parameter,那就看看这个组件怎么初始化的,看上面代码注意到都与RouteContext有关。那就看看RouteContext。

     这里也很清楚的说明了路由意图,路由器通过sql和路由规则得到路由结果,将路由结果保存到路由上下文,注意路由节点和路由单元的结构。

     到这prepare就很清楚了,就是准备好执行上下文,继续看看executeQuery,其实这个也就没什么了,有了执行上下文,那就真正去执行jdbc就行了。

总结

    综上来看Sharding-JDBC就是在sql执行前根据配置的规则得到真正的sql后,然后jdbc执行sql。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&一步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值