Mycat是什么?

· 一个彻底开源的,面向企业应用开发的大数据库集群

· 支持事务、ACID、可以替代MySQL的加强版数据库

· 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

· 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

· 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

· 一个新颖的数据库中间件产品

上诉种种都是官网对其定义,是否还是有些模糊,下面我们通过一个分库分表的案例来讲解Mycat是什么和Mycat中核心的概念和名词解释,案例如下图:

a9321d0b63e1e4869d0394a0bdadf873.png

数据库中间件

Mycat是一个介于数据库与应用之间,进行数据处理与交互的中间服务。如下图:

4a88c7a4c334fadc618325bf26aabf7c.png

通俗点讲,应用层可以将它看作是一个数据库的代理(或者直接看成加强版数据库)。但是由于真正的数据库需要存储引擎,而 Mycat 并没有存储引擎,Mycat服务不保存真正的数据,所以并不是完全意义的分布式数据库系统。所以称Mycat这样类型的数据库中间代理服务的产品为数据库中间件。

逻辑库

对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。

如图一中,在MYCAT服务区中的db_user库,只是逻辑上存在的数据库,真正的数据来源还是来源MYSQL服务区中的两台实际的Mysql db实例。

在Mycat中逻辑库在{MYCAT_HOME}/conf/schema.xml 用 标签定义。如图三:

76a518e83b29591d61151ef28ba20f53.png

逻辑表

既然有逻辑库,肯定将会存在逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。

逻辑表的数据来源,可以是数据进行切分后,分布在一个或多个分片库中,针对不同的数据分布和管理特点,我们将逻辑表又分为分片表、全局表、全局表、ER表、非分片表五种逻辑表类型。在schema.xml使用

分片表:是指那些原有的很大数据的表,需要切分到多个表,这样,每个分片都有表的一部分数据,所有分片数据的合集构成了完整的表数据,如图一种中MYCAT服务区的users表即是分片表,通过userID字段取模的方式进行数据的水平切分。如图四中用户(users)表:

03faa5cc2a3fd8d710989ba60fb4d131.png

分片规则:将大数据的表,切分到多个数据分片的策略。如图三中rule="mod-userID-long

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐