初识shardingsphere-jdbc

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

    趁着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。

 

参考资源链接:[Unity接入Android SDK全攻略:流程与问题解决](https://wenku.youkuaiyun.com/doc/644b8606ea0840391e55991f) 当在Unity中接入Android SDK并进行打包时,可能会遇到各种问题导致打包失败。为了解决这些问题,你需要进行详尽的排查相应的解决步骤。首先,确保你已经熟悉了UnityAndroid Studio的基本操作,以及它们之间的交互机制。以下是一些具体的排查解决步骤: 一、检查环境依赖 1. 确认Android StudioUnity编辑器都已安装最新版本,以避免因版本不兼容导致的问题。 2. 检查Unity项目设置中的Android SDK路径是否正确配置。 3. 确保所有必要的SDK库都已添加到Unity项目中,并且与Android Studio中设置的SDK版本相匹配。 二、检查C#与Java交互代码 1. 检查`AndroidJavaClass``AndroidJavaObject`的使用是否正确,确保没有语法错误或调用不存在的Java类方法。 2. 如果使用了Unity的`AndroidJavaProxy`来处理Java的回调,确保其方法实现与Java端接口定义一致。 三、检查打包配置 1. 在Unity的Build Settings中,确保选择了正确的目标设备API级别,与你的SDK要求相匹配。 2. 检查Player Settings中的签名配置,是否有证书密钥信息不正确或缺失的情况。 3. 在Android Studio中,检查Gradle脚本配置,确保没有路径错误或缺失的依赖库。 四、运行调试 1. 使用Unity导出的Android项目,在Android Studio中尝试构建并运行应用。通过Gradle控制台Logcat查看错误信息。 2. 如果遇到编译错误,检查相关的Java源代码,确认是否有未定义的变量或方法。 3. 如果遇到运行时错误,如应用崩溃,使用异常堆栈跟踪来定位问题。可能需要在C#代码中捕获并记录异常信息。 五、参考资源 通过参考《Unity接入Android SDK全攻略:流程与问题解决》这份资料,你可以更深入地理解UnityAndroid SDK的集成过程,以及在打包过程中可能出现的问题解决方案。这份资料详细介绍了如何设置UnityAndroid Studio环境、编写交互代码、导出打包Android工程,以及在实际开发过程中常见的问题解决办法。掌握了这些知识,你将能够更有效地解决打包失败的问题,提高开发效率应用的稳定性。 参考资源链接:[Unity接入Android SDK全攻略:流程与问题解决](https://wenku.youkuaiyun.com/doc/644b8606ea0840391e55991f)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

&一步

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

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

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

打赏作者

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

抵扣说明:

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

余额充值