三分钟了解什么是MyCat

是什么?

1.一个开源的分布式系统,遵循了MySql的原生协议,成为应用程序和数据库的桥梁,减少了应用程序和数据库的耦合。

2.中间件,也叫数据库代理,是基于阿里Cobar的二次开发。

为什么要用mycat?

在没有mycat之前,程序员写的java程序会直接和数据库交互,当需要分库时,程序中写配置文件中需要些多个连接数据库的配置文件。越来越复杂,耦合性越来越高,所以中间件的出现就解决了这个问题,程序员不需要在java程序中配置多个文件连接数据库,而是直接交给mycat去做,提高了数据库的可扩展性,程序员直接对mycat操作。

mycat解决的问题:

  1. java与数据库的紧耦合
  2. 高访问量高并发对数据库压力
  3. 读写请求数据不一致

mycat.png

能干什么?

数据分片

  • 水平分片:一个表格的数据分割到多个节点上,按照行分割(分表)
  • 垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。

schema为逻辑库,一个逻辑库分为两个逻辑表,每个表分成两个数据节点,也就是真正要存的数据(分库)。

mycat分库 (2).png

 

读写分离:

程序通过mycat访问数据,将数据存储到数据库,mycat就是一个逻辑库,也叫数据库的代理即中间代理,它实际不存数据,而它连的是每一个具体的数据库,它的任务就是“拦截”,根据不同的策略将不同的数据存到不同的数据库。

image.png

多数据源的整合

数据源存储.png

原理

Mycat的原理中最重要的一个动词就是“拦截”,它拦截了用户发送过来的SQL语句,首先对语句做了一些特定的分析:如分片分析,路由分析,读写分离分析,缓存分析等。然后将此SQL发往后端的真实数据库,最终返回给用户。

image.png

支持数据库

  • MySql
  • Oracle
  • SQL Server
  • MongoDB等

猜你喜欢

转载自blog.csdn.net/yyp0304Devin/article/details/108361818