Mycat 的核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端多个数据库(主机)里,以达到分散单台设备负载的效果。应用程序就像连接普通的 MySQL 数据库一样地去连接它,SQL 查询、操作等一模一样;而 Mycat 把数据库复杂的架构以及背后复杂的分表分库的逻辑全部透明化了。Mycat 中间件连接多个 MySQL 数据库,多个数据库之间还可以做主从同步,这一切的一切对前端应用是完全透明的,不用调整前台逻辑,只要连接到 Mycat 即可。这样一来,对前端业务系统来说,业务代码无须过多调整,可以大幅降低开发难度,提升开发速度。

Mycat 可实现数据库的读写分离,在后端的主从复制数据库集群中,通过 Mycat 配置将前端的写操作路由到主数据库中,将读操作路由到从数据库上。Mycat 可以实现读写分离下的读操作负载均衡,将大量的读操作均衡到不同的从库上,主要出现在一主多从的情形下。

Mycat 可实现数据库的高可用,在数据库主节点可用的情况下,配置一台可写从节点,这两个节点都配置在 Mycat 中,当主节点宕机时,Mycat 会自动将写操作路由到备用节点上,轻松实现热备份。

Mycat 核心概念

==========

Mycat 的核心概念如图

(1)逻辑库(schema)

Mycat 作为一个中间件,实现 MySQL 协议,对前端应用连接来说就是一个数据库,无须让开发人员知道中间件存在,所以数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。

(2)逻辑表(table)

有逻辑库,就会有逻辑表。在分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表可以数据切分后分布在一个或多个分片库中,也可以不做数据切分,不分片,只由一个表构成。

(3)分片表

分片表是指那些原有的拥有很多数据、需要切分到多个数据库的表。每个分片都有一部分数据,所有分片构成了完整的数据。

(4)非分片表

一个数据库中并不是所有的表都很大,某些表是可以不进行切分的。非分片表是相对分片表来说的,就是那些不需要进行数据切分的表。

(5)ER 表

关系型数据库是基于实体关系模型(Entity-Relationship Model)之上的,描述了真实世界中的事物与关系。Mycat 中的 ER 表就来源于此。根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 join 关联查询不会跨库操作。表分组(Table Group)是解决跨分片数据 join 关联查询的一种很好的方法决定方法,也是数据切分规划很重要的一条原则。

(6)全局表

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取! 243920)] 《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: