前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyCat02——解决数据库海量存储与快速查询

MyCat02——解决数据库海量存储与快速查询

原创
作者头像
用户8100582
发布2023-11-20 20:24:59
1920
发布2023-11-20 20:24:59
举报
文章被收录于专栏:Java多线程Java多线程

1 什么是 MyCat

随着互联网的发展,数据的量级也是呈指数式的增长,从GB到TB到PB。传统的关系型数据库已经无法满足快速查询与插入数据的需求。那么如何使用关系型数据库解决海量存储的问题呢?

此时就需要建立数据库的集群,那么为了提高查询性能,我们可以将一个数据库的数据分散到不同的数据库中存储,或者在集群中对不同数据做读写分离。于是就需要一个工具来接收程序对数据的请求,同时又能对集群数据库进行管理。MyCat 就是这样的一个中间件。

2 应用场景

2.1 高可用性

利用MyCat可以轻松实现热备份。当一台数据库服务器故障时,可以由集群中的另一台自动接管业务,从而在无人干预的情况下,保证系统持续对外提供服务。该操作由MyCat自动完成。

但是该特性,其实底层依赖于MySQL的主从数据同步,所以需要先对MySQL做主从复制的设置后才能奏效。

2.2 读写分离

使用 MyCat 可以实现对集群数据库进行读写分离,即部分数据库仅做查询服务,部分数据库仅提供增加、删除、修改的服务。

如下的一主两从数据库集群,由主库提供增加、删除、修改服务,两个从库提供查询服务。数据库的压力一般在查询,因此可通过增加查询的节点来提高性能。

2.3 数据切分

这也是MyCat的一个核心功能。通过指定条件,将存放在同一个数据库中的数据,分散保存在多个数据库中,以达到减轻单台设备负载的目的。

  • 垂直切分:按照不同的表,将数据切分到不同的数据库中。
  • 水平切分:根据表中数据的逻辑关系,将同一个表中的数据按照某种条件,拆分到多个数据库中。

2.4 整合多种数据源

当一个项目需要用到多种数据源时,如 Oracle、MySQL、PostgreSQL、EDB等待,可以使用 MyCat 进行整合,外部应用仅需要访问 MyCat 即可。

3 原理

在 MyCat 的原理中,使用最频繁的是“拦截”,拦截了应用发过来的SQL语句。

在对SQL语句拦截之后,需要一些特定的分析:

分片分析、路由分析、读写分离分析、缓存分析等。

然后将分析后SQL发到真实的数据库。

在得到数据库的返回结果后,再做适当的处理,如聚合处理、排序处理、分页处理等,最终返回给前端的应用。

整个过程如下:

  • 解析SQL语句涉及的数据表;
  • 查看表的定义,如果该表涉及分片规则,则获取SQL语句的分片字段;
  • 将SQL语句发送到相应的分片节点去执行;
  • 处理所有分片返回的数据并返回给请求方。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 什么是 MyCat
  • 2 应用场景
    • 2.1 高可用性
      • 2.2 读写分离
        • 2.3 数据切分
          • 2.4 整合多种数据源
          • 3 原理
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档