一、什么是ShardingSphere?
1.一套开源的分布式数据库中间件解决方案
2.目前有三个产品 sharding jdbc 、 sharding proxy 、sharding scaling
3.定位为关系型数据库的中间件,合理在分布式环境下使用关系型数据库操作
二、什么是分库分表?
- 1.数据库数据量不可的,随着时间和业务的发展,造成表里面的数据越来越多,如果再去对数据表
CURD的时候,造成性能问题。
2.方案1:增加硬件配置
3.方案2:分库分表
三、分库分表的方式
1.分库分表有两种方式:垂直切分和水平切分
2.垂直切分:垂直分表和垂直分库
3.水平切分:水平分表和水平分库
-
4 垂直切分:操作数据库某张表,把这张表中的字段切出来一部分,放到另一张表中。
垂直分表的场景:比如电商平台,把瀑布流中的字段放到一个表中,把商品详情(排除瀑布流中的字段)里面的字 段放到另一张表中
- 5.垂直分库:把单一数据库按照业务划分,专库专表。一个库为某一个模块用
- 6.水平分库:就是将一个数据库结构,一模一样的复制一份。用来存数据。按照一定规则向不懂数据库里面添加数据
- 7.水平分表:把一张表拆分成相同结构的表。然后按照一定规则向不同表里面添加数据
分库分表的应用和问题
-
1.应用
(1) 在数据库设计的时候就要考虑垂直分库和垂直分表
(2)随着数据库数量增加,不是马上就考虑最水平分库和水平分表,首先要考虑使用缓存、读写分离、索引等等方式来解决处理,如果以上这些方式不能根本解决问题了,再考虑做水平分库 水平分表
-
分库分表问题
(1)夸数据库查询问题(分页、排序)
(2)多数据库源管理的问题
什么是shardingJDBC
轻量级的java框架,是增加版的JDBC驱动
主要目的是:简化对已经做好分库分表的数据库的相关操作
-
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, HikariCP 等;
支持任意实现 JDBC 规范的数据库,目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 访问的数据库。