介绍
MyCat:流行的分布式数据库中间件,是一个开源的分布式数据库系统。其核心功能是分库分表,即将一个大表水平的分割成N个小表,存储在MySql服务器中。
中间件
是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的交流
支持:
MySQL、SQL Server、Oracle、DB2等主流数据库
好处:
1.解决表的容量问题(拆分多个表)
2.查询快,解决表查询的性能问题(多个线程并行查询,数据合并)
3.实现了读写分离,分库分表(数据同步)
Mycat和MySQL的区别:
可以把上层看作是对下层的抽象,当我们的应用只需要一台数据库服务器的时候我们并不需要Mycat,而如果你需要分库甚至分表,这时候应用要面对很多个数据库的时候,这个时候就需要对数据库层做一个抽象,来管理这些数据库,而最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,这就是Mycat的核心作用。
所以可以这样理解:数据库是对底层存储文件的抽象,而Mycat是对数据库的抽象。
原理:
1.拦截用户SQL语句
2.对SQL语句做特定分析(分片分析、路由分析、读写分离分析、缓存分析等)
3.将分析后的SQL发往后端数据库
4.将返回结果做处理
5.结果返回给用户
名词解释
分库分表:按照一定的规则把数据库中的表拆分成多个带有数据库实例、物理库、物理表访问路径的分表
逻辑库:MyCat中的数据库,可以包含多个逻辑表
逻辑表:MyCat中的表,可以映射连接数据库中的表
物理库:数据库中的库
物理表:数据库中的表
拆分键:分片键,描述拆分逻辑表的字段
分区键:当等值查询时,能映射一个分区的拆分键
物理分表:已经拆分后,数据库上的物理表
物理分库:包含多个物理分表的库
分库:多个数据库拆分分库表,每个数据库都是一个物理分表,物理分库名字相同
分片表、水平分片表:按照一定的规则把数据拆分成多个分区的表
全局表:冗余全量数据的逻辑表
集群:多个数据节点组成的逻辑节点
数据源:连接数据库的组件
schema库:在MyCat中配置表逻辑,视图等的配置
能干什么
1、读写分离
2、数据分片
垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)
3、多数据源整合
原理
在myCat中最重要的就是拦截,它拦截用户发送过来的SQL语句,首先对语句进行特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将sql发送到真实的数据库,并将结果进行处理,最终返回给用户。