MYCAT:
一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
MyCat技术原理
MyCat技术原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
Orders表被分为三个分片datanode(简称dn),这三个分片是分布在两台MySQL Server上(DataHost),即datanode=database@datahost方式,因此你可以用一台到N台服务器来分片,分片规则为(sharding rule)典型的字符串枚举分片规则,一个规则的定义是分片字段(sharding column)+分片函数(rule function),这里的分片字段为prov而分片函数为字符串枚举方式。当MyCat收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集和处理所有分片返回的结果数据,并输出到客户端。以select * from Orders where prov=?语句为例,查到prov=wuhan,按照分片函数,wuhan返回dn1,于是SQL就发给了MySQL1,去取DB1上的查询结果,并返回给用户。如果上述SQL改为select * from Orders where prov in (‘wuhan’,‘beijing’),那么,SQL就会发给MySQL1与MySQL2去执行,然后结果集合并后输出给用户。但通常业务中我们的SQL会有Order By以及Limit翻页语法,此时就涉及到结果集在MyCat端的二次处理,这部分的代码也比较复杂,而最复杂的则属两个表的Jion问题,为此,MyCat提出了创新性的ER分片、全局表、HBT(Human Brain Tech)人工智能的Catlet等。
http://blog.itpub.net/29510932/viewspace-1664499/
相关推荐
【标题】"mycat2基础安装包"涉及的是开源数据库中间件Mycat的第二代版本,Mycat是一款基于Java开发的分布式数据库系统,它主要用于解决大数据量、高并发场景下的数据存储与访问问题。在传统的单机数据库无法满足业务...
【标题】"mycat2-1.21" 指的是Mycat数据库中间件的一个特定版本,即1.21版。Mycat是一款开源的、基于Java开发的分布式数据库系统,常用于大数据环境下的数据库集群管理,能够实现数据库的水平扩展,提升系统的并发...
Mycat是为了解决大数据量下的高性能数据库集群的问题而出现的,它在数据库和应用之间增加了一个中间层,能够将用户的SQL请求分发到后端的数据库服务器,并将结果返回给用户。这种架构有效地提升了数据处理的并发能力...
使用docker load -i mycat2.tar 来加载这个镜像 镜像运行参数如下: "DATA_SOURCE_URL=jdbc:mysql://127.0.0.1:6606/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", "DATA_SOURCE...
《Mycat数据库分片中间件详解》 Mycat,作为一款开源的分布式数据库中间件,被广泛应用于大数据量、高并发的互联网环境中。它实现了数据库的分片功能,可以将一个大表拆分成多个小表,分散在不同的数据库服务器上,...
一个彻底开源的,面向企业应用开发的大数据库集群支持事务、ACID、可以替代MySQL的加强版数据库一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型...