数据库中间件 Sharding-JDBC 源码分析 —— JDBC实现与读写分离
1. 概述
本文主要分享 JDBC 与 读写分离 的实现。为什么会把这两个东西放在一起讲呢?客户端直连数据库的读写分离主要通过获取读库和写库的不同连接来实现,和 JDBC Connection 刚好放在一块。
OK,我们先来看一段 Sharding-JDBC 官方对自己的定义和定位
Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,DBA也无需改变原有的运维方式,可理解为增强版的JDBC驱动,旧代码迁移成本几乎为零。
可以看出,Sharding-JDBC 通过实现 JDBC规范,对上层提供透明化数据库分库分表的访问。
黑科技?实际我们使用的数据库连接池也是通过这种方式实现对上层无感知的提供连接池。甚至还可以通过这种方式实现对 Lucene、MongoDB 等等的访问。
扯远了,下面来看看 Sharding-JDBC jdbc
包的结构:
unsupported
:声明不支持的数据操作方法adapter
:适配类,实现和分库分表无关的方法core
:核心类,实现和分库分表相关的方法
根据 core
包,可以看出分到四种我们超级熟悉的对象
Datasource
Connection
Statement
ResultSet
实现层级如下:JDBC 接口 <=(继承)== unsupported
抽象类 <=(继承)== unsupported
抽象类 <=(继承)== core
类。
本文内容顺序
unspported
包adapter
包插入流程,分析的类:
ShardingDataSource
ShardingConnection
ShardingPreparedStatement(ShardingStatement 类似,不重复分析)
GeneratedKeysResultSet、GeneratedKeysResultSetMetaData
查询流程,分析的类:
ShardingPreparedStatement
ShardingResultSet
读写分离,分析的类:
MasterSlaveDataSource
Sharding-JDBC 正在收集使用公司名单:传送门。
©著作权归作者所有:来自51CTO博客作者mb5ff80520dfa04的原创作品,如需转载,请注明出处,否则将追究法律责任更多相关文章
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 改写
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(三)之查询SQL
- 数据库中间件 MyCAT 源码分析 —— SQL ON MongoDB
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)
- 数据库读写分离这个坑,让刚入职的我一脸懵逼!
- 老大甩给我 30G 文件,让小黑哥几天内全部导入到数据库
- 干货丨时序数据库DolphinDB横截面引擎教程
随机推荐