开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere-简介】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11239
ShardingSphere-简介
打开 Apache 的官网,通过官网来看什么是 ShardingSphere ,或者说 ShardingSphere 到底可以做什么事情。在浏览器中输入shardingSphere.apache.org/index_zh.html 即可。
Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,主要是针对数据库中间件的一些操作,他有三个独立的产品,并且又能混合部署配合使用,一个叫 Sharding-JDBC ,一个叫 Sharding-Proxy 还有一个叫 Sharding-Sidecar ,第三个产品目前正在规划中,所以重点为两个,这些产品店铺能提供标准化数据分片、分布式事务和数据库治理功能,适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式场景下利用关系型数摆车的计算和存储能力,例如,关系型数据库随着数据量的增加,会遇到很多瓶颈,而遇到瓶颈之后怎么做,可以对数据库进行分库分表操作,而 ShardingSphere 就是来解决这个问题而产生的关系型数据库的中间件,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质,关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
ShardlngSphere 已经在 2020 年 4 月 16 日成为 Apache 顶级项目( Apache 官方发布从 4.0.0 版本开始)。
什么是 ShardingSphere :
1、一套开源的分布式数据库中间件解决方案
2、有三个产品: Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar,主要学前两个产品的使用
3、定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库
下面是他的具体功能,了解更多界面中,介绍了他的三款产品的特点。首先看第一个产品叫做 Sharding-JDBC ,这里说 Sharding-JDBC 是轻量级 Java 框架,这句话应该感觉很熟悉,比如说之前学过的 Spring,Mybatis 都是轻量级的框架,而 Sharding-JDBC 也定位为轻量级的框架,他是在 Java 的 JDBC 层提供额外服务。他使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
(1)适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate , Mybatis , Spring JDBC Template 或直接使用JDBC 。
(2)支持任何第三方的数据库连接池,如: DBCP ,C3PO, BoneCP , Druld , HikariCP 等。
(3)支持任意实现 JDBC 规范的数据库。目前支持 MySQL ,Oracle , SQLServer , PostgreSQL 以及任何遵循 SQL92 标准的数据库。
第二个产品叫做 Sharding-Proxy ,定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持,目前先提供的 MySQL/PoetgreSQL 版本,它可以使用任何兼容MySQL/PoetgreSQLxie 协议的访问进入客户端(如:MySQL Command Client,MySQL Workbench,Navicat 等 )操作数据,对 DBA 更加友好。
比如录入数据的时候可以用客户端工具与数据库进行连接,而数据库有很多,比如常见的 Navicat 等等,那客户端究竟怎样连接数据库,这个过程是怎样不知道,而现在用了Sharding-JDBC ,他把这个过程完全透明了,就是他怎样做到可以通过配置进行实现,可以把它当做MySQL/PoetgreSQL 进行使用,这个叫 Sharding-Proxy,另外他适用于任何兼容的 MySQL/PoetgreSQL 客户端工具。
ShardingSphere 是一个分布式的环境下的一个中间件的解决方案,他有三款产品,重点关注前两个 Sharding-JDBC、Sharding-Proxy ,另外它定位为关系型数据库的中间件,用于在合理环境下使用关系型数据库进行操作。Sharding-JDBC 是轻量级 Java 框架, Sharding-Proxy 是一个透明化的数据库代理端。