PHP中的数据存储 MySQL架构 (上)

年关将至,工作上也没什么大的安排。闲暇时间从一个PHP工程师的角度去学习一下微服务架构,毕竟谁都想进步嘛,哇哈哈


数据库类型总体概述

现在主流的存储技术和应用场景,主要分为关系型数据库,比如 MySQL、Oracle 等,Oracle 主要用于大型企业,Java用的比较多一些。然后是 NoSQL 数据库,NoSQL 数据库以 Redis、MongoDB 等为主,再然后是 NewSQL 数据库,这个用的比较少,不专门做讲解了。下面看一下应用场景,先看关系型数据库,它主要适合在有事务操作、需要联合查询、结构化比较确定的场景,比如保存用户基本信息、登录注册、还有保存企业信息、新闻信息等等,用的比较多的就是 MySQL 了。在下边是 NoSQL 数据库,先看一下 MongoDB,它适用于存储事务要求和复杂关联查询比较低的一些功能,比如快照的信息、日志信息、聊天信息等等,另外一个是 HBase,它具有高吞吐和低延迟的特点,主要应用在数据库非常庞大,并且准实时查询的场景,比如聊天 IM 等等。而本章重点讲解 MySQL 的高性能和高可用,以及它底层的一些实现的原理,比如说 B+Tree、MVCC 一致性、哈希算法等等。

数据库架构演化

在开始讲原理之前呢,先来看一下存储架构的演化。

先看 1.0 版本,这边是 PC 端和移动端,它直接访问 Web 服务,而 Web 服务下边访问一些应用的服务,比如说订单服务、用户服务、产品服务等等,而他们都打到一个单点的数据库上面。因为它是一个单点的 MySQL 服务器,所以当访问量数据量小的时候,1.0 版本这个架构是可以满足的。

再看上面这张图,它和上面是一样的,只不过简化了一下,它适合数量级别比较小的项目,优化比较好的话,也可以支持到千万级的数据量,它比较适合于企业网站和创业公司,包括好多大厂,其实在创业初期,都是这样简单粗暴的架构,它基本不会具有并发性和可用性,就是假如一个点挂了的话,那么整个服务都会挂掉,他的问题就是当数据量太大时,一台服务器就会承受不了,当读写操作太大时,一台服务器也承受不了,然后呢当 MySQL 挂掉之后,其实整个应用也就挂掉了,这是他的问题。那么针对于这个问题呢,就会有 2.0 的版本

上面都不用看,主要看一下数据库这里,大家发现有一个点变成了多个点,并且这里还有写读主从。这个就是呢,随着访问量的逐渐增大,读操作的远远大于写操作,其实大部分服务和网站,读操作都是远远大于写操作的,并且也需要考虑一台 MySQL 服务器挂掉之后,不要影响整个的服务,这个时候呢,就有了 2.0 版本的架构,他对 MySQL 做了主从复制,并且进行了读写分离,这样呢,就解决了上面提到的那三个问题。

相关推荐
Mahir088 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
IT_陈寒12 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
kyriewen12 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
文心快码BaiduComate12 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
光辉GuangHui13 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
我是谁的程序员13 小时前
Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
后端·ios
irving同学4623813 小时前
Node 后端实战:JWT 认证与生产级错误处理
前端·后端
Master_Azur13 小时前
单元测试——Junit单元测试框架
后端
用户83562907805113 小时前
使用 Python 进行 Word 邮件合并
后端
用户83562907805113 小时前
Python 操作 PowerPoint OLE 对象
后端·python