首先先看下官方对mycat解释
什么是MYCAT?
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
初步了解下的我对MYCAT的理解......
mycat是对数据进行切分!!!
一 概述
1.1 数据库切分概述
1.1.1 OLTP 和 OLAP
对于海量数据的处理,按照使用场景主要分为两种类型:联机事务处理(OLTP)和联机分析处理
联机事务处理(OLTP)也称为面向交易的处理系统,其基本特征是原始数据可以立即送到计算机中心进行处理,并在很短时间内给出处理结果
联机分析处理(OLAP)是指通过多维的方式对数据进行分析、查询和报表。可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能
OLTP和OLAP的区别1.1.2 关系型数据库和NoSql数据库
上述的两类系统有多种技术实现方案,存储所以的数据库主要分为两大类:关系型数据库和NoSQL数据库。
关系数据库,是建立在关系模型基础上的数据库,其借助于代数等数学概念和方法来处理数据库中的数据。主流的有mysql、oracle、DB2、SQL Server等
NoSQL数据库,全称Not Only SQL 意思是使用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非用关系型数据库不可
关系型数据库和NoSQL的对比问题:既然Oracle 、mysql等传统关系型数据库已经非常成熟并且已大规模商用,那么 为什么还用NoSQL数据库呢?
答: 主要是由于随着互联网的迅速发展,数据量越来越大,对性能要求越来越高(这里的性能要求最直观的理解是在体验功能同一功能时牵扯到的表的有100万数据量和有1亿数据量时,程序响应均较快,客户感受不到区别),传统数据库存在先天性的缺陷,即单机(单库)性能瓶颈,并且扩展困难,这些缺陷自然无法满足日益增长的海量数据存储及其性能要求,所以才出现了各种不同的NoSQL产品,NoSQL根本性的优势在于云计算时代,简单、易于大规模分布式扩展,并且读写性能高
总结:虽然关系型数据库存在先天性的弊端,但目前NoSQL型数据库又无法将其替代,目前NoSQL只能作为传统数据库的补充存在,重点来了,核心问题就在如何规避传统数据库的缺点,让它变得易于扩展,可切分。mycat就是为了数据切分应运而出的。
1.1.3 那么,什么是数据切分
简单的说就是通过某种特定的条件,将我们存放在同一个数据库的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。
数据切分有两种切分模式 :数据的垂直切分 和 数据的水平切分
数据的垂直切分 : 按照不同的表来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直切分。
数据的水平切分:根据表中数据的逻辑关系,将同一个表中的数据按照某个字段的某个规则来分散到多个数据库(主机)上面。简单的理解就是按照数据行的切分,是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中。这种切分称之为数据的水平切分
总之一句话 垂直切分切的是表规则简单、实施方便,适合各业务之间耦合度低,相互影响很小,业务逻辑清晰的系统。水平切分切的是表里的数据,需要根据特殊的股则来切分,拆分的本身就复杂,后期的数据维护也复杂
1.2 垂直切分
垂直切分首先系统业务清晰 各大业务模块关联少才可以进上图的垂直切分(本来是单数据库现在将用户系统的user表 订单系统的order表和支付系统的pay表放到三个数据库(单机)中)
优缺点:
优点:
- 拆分后业务清晰,拆分规则明确;- 系统之间整合和扩展容易
- 数据维护简单
缺点:
- 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度
- 收到业务不同的限制存在单库性能瓶颈,不易数据扩展性能提高;
- 事务处理复杂
ps: 由于垂直切分是按照业务的分类将表分散到不同的库,所以有些业务表会过于庞大,存在单库读写存储性能瓶颈,所以就需要水平拆分来做解决。
1.3 水平切分
相对于垂直切分(对多个表做文章),水平切分则是在表内做文章,它是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。我们可以将数据的水平切分理解为是按照数据行进行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中
水平拆分示意图好 第一天的学习结束
网友评论