01.ShardingSphere笔记

#1.分库分表的概念

#1.1.垂直分表

概念:就是把一个表里的字段,分成多个表进行存储,比如一个学生表,有姓名,性别,年龄,年级,班级等信息。那么进行垂直分表的概念就是把学生表中的姓名,性别,年龄分成了一个表,年级,班级等信息又分成了另外一个表。

思考这样做的好处:

1.减少了IO流操作。因为有时候,我们就只需要学生的姓名,性别,年龄即可。其他的班级信息是不需要的。

2.就是当我们如果在做修改操作的时候,修改会有锁表的操作。那么分表的好处就是可以不影响另外一张表查询。

如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。

那既然有好处,那肯定就有弊端:

1.其缺点是需要管理冗余列,查询所有数据需要join操作

#1.2.垂直分库

比如一个学生选课系统,里面有学生表信息,选课信息。

那么我们为了减轻数据库的压力,可以做到专库专用,就是某些业务,我们可以放在单独的数据库里。

像这个学生选课系统,那么我们就可以把学生表放在一个库,选课表放在另外一个库。

#2.1.水平分库

概念,就是把所有表都复制一份出来,然后部署到不同的服务器上,这样就能减轻数据库的压力。

#2.2.水平分表

概念:就是在同一个数据库中,把表复制出多份结构相同的表。比如学生表,就分为学生表1,学生表2....

#3.总结

垂直分库分表:是对(库里的表)或者是(表里的字段)进行垂直切分。

水平分库分表:是对(整个库)或者是(整个表信息)进行水平复制。简单理解就是水平分库分表就是切分成多个同样的库和多个同样的表。

#4.分库分表应用和问题

#4.1.应用

1.在数据库设计时候就要考虑垂直分库和垂直分表的场景。

2.随着数据库数据量增加,不要马上考虑做水平切分,首先考虑缓存处理,读写分离,使用索引等等方式,如果这些方式不能根本解决问题了,再考虑做水平分库和水平分表。

#4.2.分库分表带来的问题

1.跨节点连接查询问题(分页、排序)。

2.多数据源管理问题。

因为分库分表后,就存在不同的表存放在不同的库,一些业务上是需要展示多个表数据的。这个时候就出现了跨节点连接查询的问题了。

#2.Sharding-JDBC

#2.1.简介

1.是一个轻量级的java框架,是增强版的JDBC驱动。官网:https://shardingsphere.apache.org/index_zh.html

#2.2.目的

主要目的:简化对分库分表之后数据相关操作。

猜你喜欢

转载自blog.csdn.net/u011442726/article/details/106592086