MyCAT详解

一、MyCAT概述
MyCAT是同等磨蹭由阿里Cobar演变而来的用来支持数据库读写分离、分片的分布式中间件。MyCAT可不只支持Oracle、MSSQL、MYSQL、PG、DB2涉及项目数据库,同时也支撑MongoDB等非关系型数据库。基础架构如下:

1、MyCAT原理

MyCAT主要是经对SQL的掣肘,然后经过一定规则的分片解析、路由于分析、读写分离分析、缓存分析等,然后拿SQL发给后端真实的数据块,并将回来的结果召开适度处理回来给客户端。

  

2、MyCAT功能
(1)数据库分片(Sharding)

透过某种条件,将同数据库被的数据分散的蕴藏到多单数据库被,已达成疏散单台数据库设备负载的功效,这虽是数据库分片。
a.水平拆分
同张表的不比记录,根据表的有字段的某种规则拆分到多单数据库(主机)上,这既是是水平拆分。
单库业务表可能会见超负荷庞大,存在单库读写及仓储瓶颈,这种景象可经水平拆分解决,水平拆分基本架构如下:

时常因此水平拆分规则:
*ID
*日期
*特定字段取模

 优点:

*拆分规则抽象好,join操作基本得以数据库内得
*无设有单库大数据,高并发的习性瓶颈
*应用端改造掉
*提高了系稳定与负载能力

缺点:
*拆分规则难以抽象
*分片事务一致性难以解决
*数多次扩展难度及维护量极大
*跨库join性能于差

b.垂直拆分
不等之表切分及不同的数据库(主机)上,这就是是垂直拆分。
貌似按照作业表进行归类,划分也歧的作业、模块库,耦合度越低,越易做垂直拆分,垂直拆分基本架构如下:

笔直拆分注意点:
跨库Join,采用共享数据源或分库接口调用,根据资源同数码规模、负载而定

优点:
*拆分后工作清晰,拆分规则明确
*网内成或扩展容易
*数据库维护简单

缺点:
*有业务表无法Join,只能通过接口方式解决,提高了系统复杂度
*受各国种业务不同的限在单库性能瓶颈,不爱扩展及性能提高
*事务处理复杂

c.水平拆分和直拆分共同缺点
*分布式事务处理困难
*夸节点join困难
*扩数据源管理复杂

d.切分总则
*克无切分的尽心不切分
*设若要切分,选择相当的切分规则,提前规划好
*数据库切分尽量通过数据冗余或说明分组来降低跨库join
*事务尽量采取少的多表join

(2)读写分离

 

(3)黑白名单限制

 

3、使用状况 

(1)单纯读写分离,此时配备最为简练,支持读写分离、主从切换
(2)分库分表,对记录超过1000万的表明进行水平拆分,最深支撑1000亿单表水平拆分
(3)多租户使用,每个应用一个数据库,但顺序只需要连续MyCAT,程序不移,实现多租户化
(4)报表系统,借歇MyCAT分表能力,处理大规模的表统计
(5)替代Hbase,分析深数目
(6)海量实时数据查询

4、优缺点
优点:
(1)支持多种类型数据库的分片
(2)易扩展
(3)

缺点:

二、MyCAT安装
1、下载
官网地址:http://www.mycat.io/
下载地址:http://dl.mycat.io/1.6-RELEASE/
文档地址:http://www.mycat.io/document/Mycat\_V1.6.0.pdf

三、MyCAT使用

 

季、MyCAT重要概念

 1、逻辑库(schema)

逻辑库是mycat中间件层配置的照应实际一个或多个工作数据库集群构成。

2、逻辑表(table)
a.逻辑表是mycat切分到差不多独数据库或者不切分对应用程序显示的合的表明。
b.分片表是原始的大表,经过分片,分布于不同数据库、相同数据库的保存相同表结构,但数额不同的说明。
c.非分片表是勿举行切分的申。
d.ER表基于E-R关系分片策略,子表记录及所干的父表记录存放于跟一个数据分片上,即子表依赖让父表,通过表分组保证数据join不见面跨库操作。
e.全局表,业务体系遭到生成不雅、数据量不大(十万之下),但同时要常涉及的阐明,mycat采用冗余在相继节点一个份来好。

3、分片节点(dataNode)
数据库分片后,一个大表被切分到不同之分片数据库及,每个表分片所在的数据库就是分片节点。

4、分片主机(dataHost)
分片节点所在的服务器,数据切分后,每个分片节点不必然还见面把持一华服务器,同一个分片服务器可能存储多个分片节点,尽量要读写压力大之分片节点均的厕不同的节点主机及。

5、分片规则(rule)
照某种业务规则把数据分及某个分片节点上之平整,就是分片规则。(分片规则不行重大,直接控制继续数据处理复杂度)

6、全局序列号(sequence)
当数据库分片后,原有的主键约束在分布式条件下无法用,因此用引入外部体制保证数据唯一代表,这种保险全局的数量唯一代表机制就是全局序列号(sequence)。

7、多租户
差不多用户的环境共用同之系、程序组件,并且保证每用户中数的隔离性。
a.一个用户一个数据库,隔离级别高、安全性最好,费用最高
b.共享数据库,隔离数据架构,每个用户一个schema
c.共享数据库,共享数据架构,共享database、schema,通过表tenantID区分租户数据

 

五、MyCAT附录
1、OLAP和OLTP对比

2、关系型和非关系型数据库对比

3、

 

相关文章