开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere-Sharding-JDBC简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11244
ShardingSphere-Sharding-JDBC简介
前面课程已经介绍 ShardingSphere 中相关概念包括:什么是 ShardingSphere ,什么是分库分表。下面学习 ShardingSphere中第一个产品,名为 Sharding-JDBC,学习Sharding-JDBC 具体使用。
Sharding-JDBC简介
首先对 Sharding-JDBC 介绍,然后使用Sharding-JDBC 进行分库分表操作。首先打开 ShardingSphere官网查看 Sharding-JDBC 简介:定位为轻量级Java框架,在Java的JDBC层提供的额外服务。使用它可以使客户端直连数据库,以jar包形式提供服务,无需额外部罢和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。JDBC 最早是由当当网开发分布式开源数据库中间件,在 3.0开始放入 ShardingSphere项目中,后来进入阿帕奇;在2020年4月份成为阿帕奇顶级项目,早期是当当开发的中间件,现在在 ShardingSphere 中进行使用。
1. 为轻量级Java框架,可以理解为增强版的JDBC驱动。
另外 Sharding-JDBC 是 ShardingSphere 中第一个项目,Sharding-JDBC 支持 JDBC 的ORM 框架,例如:Mybatis,Spring JDBC Template,或直接使用 JDBC ,或者 Hibernate。支持第三方数据连接池,如: DBCP,C3PO,BoneCP,Druid,HikariCP等。支持任意实现JDBC规范的数据库。目前支持 MySQL,Oracle,SQLServer,
PostgreSQL以及任何遵循SQL92标准的数据库。这是关于Sharding-JDBC 规范,是概念上说明。
2. Sharding-JDBC作用
(1)主要目的是:简化对分库分表之后数据相关操作
根据 ShardingSphere 官网中图进行讲解,首先 Sharding-JDBC作用并不是直接做分库分表。做操作第一部分,首先需要数据库工程师把数据库和表做拆分,即已经做好分库分表,使用 Sharding-JDBC 操作分库分表后的内容,假设现在需要向多个数据库中添加数据,向多个表中添加数据可以利用 Sharding-JDBC做到;可以理解为在正在操作中,可以看到图中 Sharding-JDBC可以操作多个数据库多个表,这个过程叫 Business Code 是已经写好的代码,在使用Sharding-JDBC 时引入 Sharding-JDBC 相关 jar包。通过一个语句就可以操作多个数据库,多个表,这个过程可以通过 Sharding-JDBC实现;可以理解为Sharding-JDBC 主要做两个功能:第一个时数据分片,第二个是读写分离。在进行操作时只需在项目中引入相关 jar 包,然后直接进行操作即可。而具体操作那些数据源,哪些表,包括那些数据库这一过程由 Sharding-JDBC 帮助实现。最终一句话可以记住:使用 Sharding-JDBC目的是简化对分库分表后基本操作。
例如把数据库分为多个库其中又分为多个表,这时如果没有 Sharding-JDBC操作时可能比较麻烦,因为现在有多个数据库又有多个表,数据库又在不同服务器上,在操作数据库1时又要操作数据库2,还需要配置多个数据源,过程比较繁琐。而使用 Sharding-JDBC 后对过程进行简化,只需要编写代码把 jar 包引入,在 Sharding-J
DBC 中做相关配置。编写代码与之前相同,只需要编写一段很简单的代码通过Sharding-JDBC帮助实现对数据库分库分表后数据的操作。由于Sharding-JDBC 支持各种框架,在编写代码时可以只写最普通的 JDBC 代码或使用Mybatis,Hibernate等等;另外Sharding-JDBC 支持多种连接池,例如:Druid,C3P0等等;包括支持多种 JDBC 数据库规范,例如 MySQL,Oracle,SQLServer等等。
这是关于什么是 Sharding-JDBC ,其目的是为了简化分库分表后数据的操作,上图很好说明了这个问题。
这是关于 Sharding-JDBC 基本介绍,下面通过具体案例学习Sharding-JDBC 怎么对分库分表后数据进行操作,通过垂直方式,水平方式时使用Sharding-JDBC怎么去做,下面做具体学习,现在主要是对概念进行学习。