高性能架构-数据库分库分表-ShardingSphere
Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
文章目录
前言
ShardingSphere。
提示:以下是本篇文章正文内容,下面案例可供参考
一、ShardingSphere是什么?
ShardingSphere-JDBC 是 Apache ShardingSphere 的第一个产品,也是 Apache ShardingSphere 的前身。 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC。
支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP 等。
支持任意实现 JDBC 规范的数据库,目前支持 MySQL,Oracle,SQLServer,PostgreSQL 以及任何遵循 SQL92 标准的数据库。
二、主要原理
sharding-jdbc框架集成在应用端,应用代码执行jdbc dao操作时,被shardingpjdbc框架拦截,进行本地的sql解析,改写,路由,执行。即解析到sql语句,获取到语句的类型,涉及到的表和关键字段,如DML语句(update,delete,insert,create)DQL(select)语句实现路由到不同的数据库实现读写分离,解析到不同的表根据分片规则(如 where id=1)路由到不同的库和表,实现分库分表。路由到对应的数据库上执行,将返回的结果归并,因为一条sql可能涉及到多个库和表的联查,返回给DAO操作的方法。
**
**
三、简易使用
直接上代码,在写的过程中,遇到了不少坑,再次也一并分享给大家
1.引入依赖
使用mybatisplus与shardingshpere集成开发的