分布式数据库mycat中间件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenzhen_zsw/article/details/89188737

分布式数据库mycat中间件

 

什么是MyCat

    是目前最流行的分布式数据库中间插件

 

为什么使用MyCat

    1)如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升。但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的。这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库。如何使用关系型数据库解决海量存储的问题呢?此时就需要做数据库集群,为了提高查询性能将一个数据库的数据分散到不同的数据库中存储,为应对此问题就出现了——MyCat

    2)综上所述:Mycat作用为:能满足数据库数据大量存储;提高了查询性能;

    3)MyCat核心功能其实就是分库、分表;

数据库演进

 

支持的数据库

1)mysql;

2)sqlserver;

3)Oracle;

4)mongoDB;

5)......

 

架构

    前端用户可以把mycat看作是一个数据库代理,用mysql客户端工具(如Navicat)和命令访问,而后端支持mysql,sqlserver,oracle等主流数据库,用mysql native 协议和多个mysql服务器通信,也可用JDBC协议与大多数主流数据库服务器通信,其核心功能就是分库分表,即将一个大表水平分割为N个小表,真正的存储在后端Mysql服务器中或其它数据库中

 

 

mycat原理

    mycat原理:可以用“拦截”一词形容,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将此sql发往后端的真实数据库,并将返回的结果做适当处理,最终返回给用户;

 

 

 

 

分片

    1)数据库分片指:通过某种特定的条件,将我们存放在一个数据库中的数据分散存放在不同的多个数据库(主机)中,这样来达到分散单台设备的负载,根据切片规则,可分为以下两种切片模式:

    2)垂直切片:将不同的表切分到不同的数据库中

    3)水平切片:将同一种表按照某种条件切分到不同的数据库中(这种方式最常用)

 

水平分片

    MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法

    1.Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。

    2.Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。 

    3.DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上 ;

    4.DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上;


 

 

猜你喜欢

转载自blog.csdn.net/shenzhen_zsw/article/details/89188737