乐趣区

关于mysql:Macat数据库中间件入门

一. 什么是数据切分

指通过某种特定的条件,将咱们寄存在同一个数据库中的数据扩散存
放到多个数据库(主机)下面,以达到扩散单台设施负载的成果。

数据切分个别分为两种:垂直切分 程度切分


二. 垂直切分

依照应用程序功能模块来分多个数据库, 就是垂直拆分。

长处
◆ 数据库的拆分简单明了,拆分规定明确;

◆ 利用程序模块清晰明确,较为简单, 整合容易;

◆ 数据保护不便, 容易定位


毛病
◆ 局部表关联无奈在数据库级别实现,须要在程序中实现,存在跨库 join 的问题。对于这类的表,就须要去做取舍,是数据库退让业务,共用一个数据源,还是分成多个库,业务之间通过接口来做调用解决;初期数据量比拟少,或者资源无限的状况下,会抉择共用数据源,然而当数据倒退到了肯定的规模,负载很大的状况,就须要必须去做宰割。

◆ 对于拜访极其频繁且数据量超大的表依然存在性能瓶颈,不肯定能满足要求;

◆ 事务处理绝对更为简单;

◆ 切分达到肯定水平之后,扩展性会遇到限度;

◆ 过多切分可能会带来零碎适度简单而保护艰难。


三. 程度拆分

为了解决垂直拆分带来的问题,(一般来说是基于解决超大表性能瓶颈问题, 查问很慢, 读写拆散模式只有一台主机, 若遇到高并发插入, 一台主机承受不住压力), 引入了程度拆分。

程度拆分不是将表做分类,而是依照某个字段的某种规定来扩散到多个库之中,每个表中蕴含一部分数据。简略来说,数据的程度切分了解为是依照数据记录行来切分,将表中的某些行切分到一个数据库,而另外的某些行又切分到其余的数据库中, 也就是俗称分库分表。

程度切分的长处

◆ 表关联根本可能在数据库端全副实现;—- 不须要通过应用程序来关联表查问合并

◆ 不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;—- 分多库多表则不论是查问还是插入都不存在性能瓶颈问题

◆ 事务处理绝对简略;

◆ 应用程序端整体架构改变绝对较少;—- 对程序根本通明


程度切分的毛病

◆ 切分规定绝对更为简单,很难形象出一个可能满足整个数据库的切分规定;

◆ 前期数据的保护难度有所增加,人为手工定位数据更艰难;

◆ 利用零碎各模块耦合度较高,可能会对前面数据的迁徙拆分造成肯定的艰难。

◆ 跨节点合并排序分页问题

◆ 多数据源治理问题


四.Mycat 简介

Mycat 是一个数据库代理,MySQL、SQL Server、Oracle、DB2、PostgreSQL 等支流数据库,也反对 MongoDB 这种新型 NoSQL 形式的存储

Mycat 并不存储数据,只做数据路由, 咱们也能够简略认为 Mycat 就是数据库中间件。

它拦挡了用户发送过去的 SQL 语句,首先对 SQL 语句做了一些特定的剖析:如分片剖析、路由剖析、读写拆散剖析、缓存剖析等,而后将此 SQL 发往后端的实在数据库,并将返回的后果做适当的解决,最终再返回给用户。


五.Mycat 重要概念

逻辑库(schema):存在在 mycat 外面的虚构库

逻辑表(table):存在在 mycat 外面的虚构表

分片表:分片表,是指那些原有的很大数据的表,须要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片形成了残缺的数据

非分片表:不须要进行数据切分的表

ER 表:子表的记录与所关联的父表记录寄存在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 Join 不会跨库操作。

表分组(Table Group):是解决跨分片数据 join 的一种很好的思路,也是数据切分布局的重要一条规定

全局表 :例如字典表,每一个数据分片节点上有保留了一份字典表数据
数据冗余是解决跨分片数据 join 的一种很好的思路,也是数据切分布局的另外一条重要规定

分片节点(dataNode):数据切分后,一个大表被分到不同的分片数据库下面,每个表分片所在的数据库就是分片节点

节点主机(dataHost):数据切分后,每个分片节点(dataNode)不肯定都会独占一台机器,同一机器下面能够有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost), 为了躲避单节点主机并发数限度,尽量将读写压力高的分片节点(dataNode)平衡的放在不同的节点主机(dataHost)

分片规定(rule):后面讲了数据切分,一个大表被分成若干个分片表,就须要肯定的规定,这样依照某种业务规定把数据分到某个分片的规定就是分片规定,数据切分抉择适合的分片规定十分重要,将极大的防止后续数据处理的难度。

全局序列号(sequence):数据切分后,原有的关系数据库中的主键束缚在分布式条件下将无奈应用,因而须要引入内部机制保证数据唯一性标识,这种保障全局性的数据惟一标识的机制就是全局序列号(sequence)。

上述基本概念后续再看案例介绍

退出移动版