广告
返回顶部
首页 > 资讯 > 数据库 >数据库中间件MyCat的示例分析
  • 439
分享到

数据库中间件MyCat的示例分析

2024-04-02 19:04:59 439人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“数据库中间件MyCat的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中间件MyCat的示例分析”这篇文章吧。1、Myc

这篇文章主要为大家展示了“数据库中间件MyCat的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中间件MyCat的示例分析”这篇文章吧。

1、Mycat 应用场景

Mycat 发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:

  • 1. 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换

  • 2. 分表分库,对于超过 1000 万的表进行分片,最大支持 1000 亿的单表分片

  • 3. 多租户应用,每个应用一个库,但应用程序只连接 Mycat,从而不改造程序本身,实现多租户化

  • 4. 报表系统,借助于 Mycat 的分表能力,处理大规模报表的统计

  • 5. 替代 HBase,分析大数据

  • 6. 作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选择。

MYCAT可以实现读写分离下的读操作负,mycat载均衡,将大量的读操作均衡到不同的从库上,主要出现在一主多从情形下。

MYCAT可实现数据库的高可用,在数据库主节点可用的情况下,配置一台可写从节点,这两个节点都配置在MYCAT中,当主节点宕机时,MyCAT会自动将写操作路由到备用节点上,但并不支持在切换之后的继续主从同步。

当读写分离已经不能满足持续增加的访问量时,MYCAT可实现数据库的垂直拆分,将所有的数据库表按照模块划分,不同类型的表拆分到不同的数据库服务器

随着业务量的增长,垂直拆分之后如果又出现了数据库性能问题,则需要进行水平切分,这就是俗称的分库分表。将数据量很大的表数据切分到不同的服务器库中,表结构是一样的,而使用MYCAT实现水平切分,对前端应用是完全透明的,不用调整前台逻辑。

从定义和分类来看,它是一个开源分布式数据库系统,是一个实现了Mysql协议的服务器,前端用户可以把它看作是一个数据库代理,用mysql客户端工具和命令行访问,而其后端可以用Mysql原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Serveroracle、DB2、postgresql等主流数据库,也支持mongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度

2.传统关系型数据库局限性

传统关系型数据库由于缺乏扩展性在面对大数据时存在巨大的缺陷,但是关系模型、事务机制对于大部分系统又不必不可少,目前业界主流的做法就是将传统数据库进行切分(包括垂直切分、水平切分等),提高数据库的可扩展性。但是切分之后又带来了新的问题,比如多数据源管理问题、跨节点join问题、分布式事务问题等。下面探讨Mycat如何解决这些问题。

多数据源管理问题

针对多数据源管理问题,主要有两种解决思路,第一:客户端模式,在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个数据库,在模块内完成数据的整合。第二:通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明。第一种方式不具备通用性,每个应用程序都需要自行开发数据整合功能,且对于已经建设完成的系统需要进行代码重构,不适宜推广。目前主要使用的是第二种方式,Mycat 的原理如下: Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

数据库中间件MyCat的示例分析

Mycat的原理与其他分布式数据库中间件很类似,但是在架构上还是有区别,Mycat来源于Cobar,但在其基础上进行了很大改进,Mycat的架构如下:

数据库中间件MyCat的示例分析

目前主流的分布式数据库中间件还有TDDL、 Amoeba、 Coba等,TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以jar包方式提供给应用调用。属于JDBC Shard 的思想,网上也有很多其它类似产品。Amoeba是作为一个真正的独立中间件提供服务,即应用去连接Amoeba操作MySQL集群,就像操作单MySQL一样,从架构中可以看来,Amoeba算中间件中的早期产品,后端还在使用JDBC Driver. Cobar 是Amoeba基础上进化的版本,一个显著变化是把后端JDBC Driver改为原生的MySQL通信协议层,这就意味着不能支持Oracle、ProstgreSQL 等主流数据库。MyCat 又是在Cobar基础上发展的版本,后端由BI0改为NIO并发量有大幅提高,增加了对Order By、GroupBy、limit 等聚合功能的支持,支持目前主流的大部分数据库。

跨节点join问题

Mycat支持inner join、leaf/right join、cross join、 Full join等方式跨节点join,主要是通过全局表,ER分片,Share Join 和catlet(人工智能)四种方式实现:

1、全局表

一个真实的业务系统中,往往存在大量的类似字典表的表格,它们与业务表之间可能有关系,这种关系,可以理解为“标签”,而不应理解为通常的“主从关系”,这些表基本上很少变动,可以根据主键ID进行缓存,下面这张图说明了一个典型的“标签关系”图:

数据库中间件MyCat的示例分析

在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:

  • 1.变动不频繁

  • 2.数据量总体变化不大

  • 3.数据规模不大,很少有超过数十万条记录。

鉴于此,MyCAT定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:

  • 1.全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性

  • 2.全局表的查询操作,只从一个节点获取

  • 3.全局表可以跟任何一个表进行J0IN操作

将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据J0IN的难题。通过全局表+基于ER关系的分片策略,MyCAT可以满足80%以上的企业应用开发。

全局表配置方式如下(全局表会存储于所以节点) :

数据库中间件MyCat的示例分析

以上是“数据库中间件MyCat的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 数据库中间件MyCat的示例分析

本文链接: https://www.lsjlt.com/news/57697.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库中间件MyCat的示例分析
    这篇文章主要为大家展示了“数据库中间件MyCat的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中间件MyCat的示例分析”这篇文章吧。1、Myc...
    99+
    2022-10-18
  • MyCat分库分表的示例分析
    这篇文章主要为大家展示了“MyCat分库分表的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MyCat分库分表的示例分析”这篇文章吧。一、当前分片信息配...
    99+
    2022-10-18
  • 如何进行数据库中间件 MyCAT 源码分析
    这篇文章将为大家详细讲解有关如何进行数据库中间件 MyCAT 源码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 概述可能你在看到这个标题会小小的吃...
    99+
    2022-10-19
  • 数据库中数据计算中间件技术的示例分析
    这篇文章主要介绍了数据库中数据计算中间件技术的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。传统企业大数据架构的问题上图是大家都很熟...
    99+
    2022-10-18
  • 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
    关注**微信公众号:【芋艿的后端小屋】**有福利:RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表RocketMQ / MyCAT / Sharding-JD...
    99+
    2022-10-18
  • 怎么用数据库中间件Mycat+SpringBoot完成分库分表
    这篇文章主要讲解了“怎么用数据库中间件Mycat+SpringBoot完成分库分表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用数据库中间件Mycat+SpringBoot完成分库分表...
    99+
    2023-06-16
  • Oracle表空间数据库文件收缩的示例分析
    这篇文章主要介绍了Oracle表空间数据库文件收缩的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们经常会遇到数据库磁盘空间爆满的...
    99+
    2022-10-18
  • 数据库中oradebug 10046事件的示例分析
    这篇文章给大家分享的是有关数据库中oradebug 10046事件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 SQL> orad...
    99+
    2022-10-19
  • express.js中间件的示例分析
    这篇文章将为大家详细讲解有关express.js中间件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。express的新开发人员往往对路由处理程序和中间件之间的区...
    99+
    2022-10-19
  • 数据库中间件——MyCat部署安装
    关于mycat的链接:Mycat官网Mycat下载链接Mycat官方文档,百度网盘官方文档下载链接,提取码:f9nq。Mycat简略文档 可以在开始之前,阅读Mycat简略文档,对其有个大概了解。 注:My...
    99+
    2022-10-18
  • 数据库中sqlnet.ora的示例分析
    小编给大家分享一下数据库中sqlnet.ora的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 一、例子1、SQLNET.AUTHENTICATION_SERVICES= (NT...
    99+
    2022-10-19
  • vue组件之间数据传递的示例分析
    小编给大家分享一下vue组件之间数据传递的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!(1)props属性:在父组件中,可以通过子组件标签属性的形式将数据或者函数传给子组件,子组...
    99+
    2022-10-19
  • MySQL数据库的示例分析
    这篇文章给大家分享的是有关MySQL数据库的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数据库概要数据库(Database)是存储与管理数据的软件系统,就像一个存入...
    99+
    2022-10-18
  • mysql数据库中mycli的示例分析
    这篇文章给大家分享的是有关mysql数据库中mycli的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。可以先看下效果图:如果自己不去尝试,可能感受没那么强烈,所以不如自己...
    99+
    2022-10-18
  • Mycat中间件实现Mysql数据分片( 下篇)
    9.数据按节点(DataNode)分片 [root@k8s01 conf]# vim schema.xml [root@k8s01 conf]# vim rule.xml id:表示字段...
    99+
    2022-10-18
  • Mycat中间件如何实现Mysql数据分片
    这篇文章主要介绍了Mycat中间件如何实现Mysql数据分片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。架构图:机器规划:IP地址主机名角...
    99+
    2022-10-18
  • MySQL数据库中数据约束的示例分析
    这篇文章主要介绍了MySQL数据库中数据约束的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。为了防止不符合规范的数据进入数据库,在用...
    99+
    2022-10-18
  • express.js框架中间件的示例分析
    这篇文章给大家分享的是有关express.js框架中间件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。_express.js_作为_Node.js_的老牌框架,是现有框...
    99+
    2022-10-19
  • Express cookie-parser中间件的示例分析
    这篇文章给大家分享的是有关Express cookie-parser中间件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。入门例子:cookie设置与解析先从最简单的例子...
    99+
    2022-10-19
  • 数据库中跨库数据表运算的示例分析
    这篇文章将为大家详细讲解有关数据库中跨库数据表运算的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 简单合并(FROM)所谓跨库数据表,是指逻辑上同一张数据表...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作