是什么?
1.一个开源的分布式系统,遵循了MySql的原生协议,成为应用程序和数据库的桥梁,减少了应用程序和数据库的耦合。
2.中间件,也叫数据库代理,是基于阿里Cobar的二次开发。
为什么要用mycat?
在没有mycat之前,程序员写的java程序会直接和数据库交互,当需要分库时,程序中写配置文件中需要些多个连接数据库的配置文件。越来越复杂,耦合性越来越高,所以中间件的出现就解决了这个问题,程序员不需要在java程序中配置多个文件连接数据库,而是直接交给mycat去做,提高了数据库的可扩展性,程序员直接对mycat操作。
mycat解决的问题:
- java与数据库的紧耦合
- 高访问量高并发对数据库压力
- 读写请求数据不一致
能干什么?
数据分片
- 水平分片:一个表格的数据分割到多个节点上,按照行分割(分表)
- 垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。
schema为逻辑库,一个逻辑库分为两个逻辑表,每个表分成两个数据节点,也就是真正要存的数据(分库)。
读写分离:
程序通过mycat访问数据,将数据存储到数据库,mycat就是一个逻辑库,也叫数据库的代理即中间代理,它实际不存数据,而它连的是每一个具体的数据库,它的任务就是“拦截”,根据不同的策略将不同的数据存到不同的数据库。
多数据源的整合
原理
Mycat的原理中最重要的一个动词就是“拦截”,它拦截了用户发送过来的SQL语句,首先对语句做了一些特定的分析:如分片分析,路由分析,读写分离分析,缓存分析等。然后将此SQL发往后端的真实数据库,最终返回给用户。
支持数据库
- MySql
- Oracle
- SQL Server
- MongoDB等