数据库中间件MyCat的学习(理论部分)

目录

写在前面:

历史总是要前进的,历史从来不等待一切犹豫者、观望者、懈怠者、软弱者;只有与历史同步伐、与时代共命运的人才能赢得光明的未来!

一、MyCat的介绍

1.什么是MyCat?

2.为什么要用MyCat ?

二、Mycat优势 

1.性能可靠稳定

2.强大的技术团队

3.体系完善

三、Mycat应用场景 

1.高可用性与MySQL读写分离

2.100亿大表水平分表、集群并行计算

3. 数据库路由器

4.整合多种数据源

四、核心概念详解

 1.逻辑库schema

2.逻辑表table

3.节点主机DataNode

4.数据库主机DataHost

5.MyCat的用户(类似于MySQL的用户,支持多用户)

 五、Mycat原理

 1.流程示例

写在最后:

        行笔暂且至此、下期继续!

 

 


写在前面:
历史总是要前进的,历史从来不等待一切犹豫者、观望者、懈怠者、软弱者;只有与历史同步伐、与时代共命运的人才能赢得光明的未来!

一、MyCat的介绍

1.什么是MyCat?

Mycat是数据库中间件,所谓中间件数据库中间件是连接Java应用程序和数据库中间的软件 

2.为什么要用MyCat ?
  • Java与数据库的紧耦合
  • 高访问量高并发对数据库的压力
  • 读写请求数据不一致

二、Mycat优势 

1.性能可靠稳定

基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用 案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。

2.强大的技术团队

MyCat现在由一支强大的技术团队维护 , 吸引和聚集了一大批业内大数据和云计算方面的资深工程师、架构师、DBA,优秀的团队保障了MyCat的稳定高效运行。而且MyCat不依托于任何商业公司,而 且得到大批开源爱好者的支持。

3.体系完善

MyCat已经形成了一系列的周边产品,比较有名的是 Mycat-web、Mycat-NIO、Mycat-Balance 等,已经形成了一个比较完整的解决方案,而不仅仅是一个中间件。

三、Mycat应用场景 

补充:Mycat还形成了一系列周边产品,比较有名的是 Mycat-web、Mycat-NIO、Mycat-Balance等,已成为一个比较完整的数据处理解决方案,而不仅仅是中间件。

1.高可用性与MySQL读写分离

利用Mycat可以轻松实现热备份,当一台服务器停机时,可以由双机或集群中的另一台服务器自动接管其业务,从而在无须人工干预的情况下,保证系统持续提供服务。这个切换动作由Mycat自动完成。

注意:

Mycat 的读写分离及自动切换都依赖于数据库产品的主从数据同步。

2.100亿大表水平分表、集群并行计算

数据切分是Mycat的核心功能,是指通过某种特定的条件,将存放在同一个数据库中的数据分散存放在多个数据库(主机)中,以达到分散单台设备负载的效果。

数据切分有两种切分模式

  • 按照不同的表将数据切分到不同的数据库中,这种切分可以叫作数据的垂直切分。
  • 根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多个数据库中,这种切分叫作数据的水平切分。当数据量超过800万行且需要做分片时,可以利用Mycat实现数据切分。
3. 数据库路由器

Mycat基于MySQL 实例的连接池复用机制,可以让每个应用最大程度地共享一个MySQL实例的所有连接池,让数据库的并发访问能力大大提升。

4.整合多种数据源

当一个项目需要用到多种数据源如Oracle、MySQL、SQL Server、PostgreSQL时,可以利用Mycat进行整合,只需访问Mycat 这一个数据源就行。

四、核心概念详解

 1.逻辑库schema

业务开发人员通常在实际应用中并不需要知道中间件的存在,只需要关注数据库,所以数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。

注意:

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

2.逻辑表table

既然有逻辑库,就会有逻辑表。在分布式数据库中,对于应用来说,读写数据的表就是逻辑表。逻辑表可以分布在一个或多个分片库中,也可以不分片。

注意:

Table:表,即物理数据库中存储的某⼀张表,与传统数据库不同,这⾥的表格需要声明其所存储的逻辑数据节点DataNode。

3.节点主机DataNode

将数据切分后,每个分片节点不一定会独占一台机器,同一台机器上可以有多个分片数据库,这样一个或多个分片节点所在的机器就是节点主机。为了规避单节点主机并发数量的限制,尽量将读写压力高的分片节点均匀地放在不同的节点主机上。

4.数据库主机DataHost

数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。

5.MyCat的用户(类似于MySQL的用户,支持多用户)

 五、Mycat原理

先来一张图压压惊:

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL 语句。

流程:

首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离 分析、缓存分析等,然后将此 SQL 发 往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。 

 1.流程示例

  1. 解析SQL语句涉及的表。
  2. 查看表的定义,如果表存在分片规则,则获取SQL语句的分片字段。
  3. 将SQL语句发送到相应的分片去执行。
  4. 最后处理所有分片返回的数据并返回给客户端。

写在最后:

        行笔暂且至此、下期继续!

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值