什么是分库: 对一个数据库进行拆分 什么是分表: 对表结构进行拆分,将存储在一张表结构的数据,分散地存储在多张表结构当中
拆分策略(拆分维度)分为以下两种
一、垂直拆分
1、垂直分库:
2、垂直拆表
二、水平拆分
1、水平分库
2、水平分表
垂直分库: 指的是以表为依据,根据业务将不同表拆分到不同库中
垂直分库的特点
1、每个库的表结构都不一样
2、每个库的数据也不一样
3、所有库的并集是全量数据
垂直分表: 指的是以字段为依据,根据字段属性将不同字段拆分到不同表中
垂直分表的特点
1、每个表的结构都不一样
2、每个表的数据也不一样,多张表之间一般通过一列(主键/外键)关联
3、所有表的并集是全量数据
水平分库: 指的是以字段为依据,按照一定策略,将一个库拆分到多个库中
水平分库的特点
1、每个库的表结构都一样
2、每个库的数据都不一样
3、所有库的并集是全量数据
水平分表: 指的是以字段为依据,按照一定策略,将一个表的数据拆分到多个表中
水平分表的特点
1、每个表的表结构都一样
2、每个表的数据都不一样
3、所有表的并集是全量数据
思考:当我们把原来存储在一个数据库当中的数据分散地存储在多个数据库当中,对于应用程序来说,原来是操作一个数据 库,现在变成要操作多个数据库,那么我们该如何实现分库分表,以及分库分表之后应用程序的访问该如何进行 下面来介绍分库分表需要依赖什么技术,从此可以来解决我们思考的问题
1、shardingJDBC: 基于AOP原理,在应用程序中对本地执行的SQL进行拦截、解析、改写、路由处理。需要自行编码配 置实现,只支持java语言,性能较高
2、MyCat: 数据库分库分表的中间件,不用调整代码即可实现分库分表,支持多种语言,性能不及前者
什么是数据库分库分表的中间件 指的是使用了MyCat之后,应用程序不需要做任何的改动,也不用考虑每一次应该连接哪个数据库、我们应该操作哪个数据库,而且 我们也不用在应用程序当中去集成任何第三方的依赖,也不用做其它的编码和配置,有了这个中间件之后,我们的应用程序在访问的 时候不用直接访问数据库,直接访问MyCat中间件即可。访问MyCat就和访问MySQL,对于应用程序来说是一样的、无感知的
我们后面的课主要学MyCat