MYCAT 简介(一)

 

1.背景

社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中,逐渐替换cobar旧的框架体系,并命名为mycat。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。MyCAT是目前最流行的基于java语言编写的数据库中间件,是一个实现了Mysql协议的服务器,核心功能主要用于做分库分表和读写分离。

MyCat官网:http://www.mycat.io/

2.应用,数据库 和 mycat的关系

3.mycat优势
 

  1. java编写的中间件,免费,开源,社区活跃
  2. 单一的MySql数据存储量和操作量级有限,MyCat可以管理若干MySql数据库,可以实现数据库的存储和操作。
  3. 支持垂直水平数据库拆分
  4. 对代码弱关联,基本无侵入式

4.基本名词介绍

  • 分片

把单服务器上的数据分散到不同的服务器上;比如实例 A:192.168.15.108:3306 有个数据库db,现在要进行分片,把数据一部分切分到 实例 B :192.168.109:3306的这台机器的实例上,这样子db就存在两个分片;

  • 分表

1.同库分表 :同一个数据库中,按某种规则把数据量大的表如 t_user分成若干个数据量小的表 t_user_0,t_user_1....

优点:减少单表操作数据量大的压力

缺点:数据仍然还在同一个库中,CPU、内存、文件IO、网络IO等瓶颈还是无法解决,表名不一致导致后续处理复杂

2.不同库分表:同一个表分布到不同的数据库上,表名相同,操作简单

优点:数据分散在不同库中,CPU、内存、文件IO、网络IO等瓶颈得到有效解决

缺点:多个库数据需要复制,同步;聚合操作麻烦难以进行 :如left join order By,group by

  • 分库

分库也可以理解为数据分片,当业务系统的数据容量接近或超过单台服务器的容量、QPS/TPS接近或超过单个数据库实例的处理极限等。此时,往往是采用垂直和水平结合的数据拆分方法,把数据服务和数据存储分布到多台数据库服务器上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章