MyCat是什么?干什么?
官方:
MyCAT是一个面向企业的开源软件“大型数据库集群”。MyCAT是一个强制数据库,它是MySQL的替代品,支持事务和ACID。MyCAT作为企业数据库的MySQL集群,可以替代昂贵的Oracle集群。MyCAT也是一种新型的数据库,它像是一个集成了内存缓存技术、NoSQL技术和HDFS大数据的SQL服务器。MyCAT作为一种新型的现代企业数据库产品,与传统数据库和新的分布式数据仓库相结合。总之,MyCAT是一种全新的数据库中间件。
Mycat的目标是以低成本将当前的独立数据库和应用程序顺利迁移到云端,解决数据存储和业务规模快速增长带来的瓶颈问题。
非官方理解:
从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度
论点概述
•一个用于MySQL读写分离和与数据切分的高可用中间件
•一个模拟为MySQLServer的超级数据库代理
•一个能平滑扩展支持1000亿大表的分布式数据库系统 (普通单表1kw以下)
•一个可管控多种关系数据库的数据库路由器
MyCat的优势是什么?
- 连接过多问题,可以通过MyCat统一管理所有的数据源,后端数据库集群对前端应用程序透明。
- 独创的ER关系分片,解决E-R分片难处理问题,存在关联关系的父子表在数据插入的过程中,子表会被MyCat路由到其相关父表记录的节点上,从而父子表的Join查询可以下推到各个数据库节点上完成,这是最高效的跨节点Join处理技术,也是MyCat首创。
- 采用全局分片技术,每个节点同时并发插入和更新数据,每个节点都可以读取数据,提升读性能的同时,也解决跨节点Join的效率。
- 通过人工智能的catlet支持跨分片复杂SQL实现以及存储过程支持.
MyCat技术原理?
MyCat技术原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
MyCat特点
1.支持 SQL 92标准 支持Mysql集群,可以作为Proxy使用 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群,自动故障切换,高可用性 。
2.支持读写分离(参考具体的schema.xml配置)。
3.支持Mysql双主多从,以及一主多从的模式 。
4.支持全局表。
5.支持数据自动分片到多个节点,用于高效表关联查询 。
6.垮库join,支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询多平台支持,部署和实施简单。
7.支持nosql数据库mongoDB。