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 做了主从复制,并且进行了读写分离,这样呢,就解决了上面提到的那三个问题。

相关推荐
无责任此方_修行中5 分钟前
我的两次 Vibe Coding 经历,一次天堂,一次地狱
后端·node.js·vibecoding
想想就想想7 分钟前
深度分页介绍及优化建议:从原理到实战的全链路解决方案
后端
程序员清风11 分钟前
Dubbo RPCContext存储一些通用数据,这个用手动清除吗?
java·后端·面试
南瓜小米粥、17 分钟前
从可插拔拦截器出发:自定义、注入 Spring Boot、到生效路径的完整实践(Demo 版)
java·spring boot·后端
Huangmiemei91119 分钟前
Spring Boot项目的常用依赖有哪些?
java·spring boot·后端
天天摸鱼的java工程师27 分钟前
接口联调总卡壳?先问自己:真的搞清楚 HTTP 的 Header 和 Body 了吗?
java·后端
Nan_Shu_61442 分钟前
学习SpringBoot
java·spring boot·后端·学习·spring
间彧42 分钟前
微服务架构中@Data注解在DTO与实体类中的最佳实践
后端
间彧43 分钟前
Spring Boot中@Data注解的深度解析与实战应用
后端
数据库知识分享者小北44 分钟前
Qoder + ADB Supabase :5分钟GET超火AI手办生图APP
数据库·后端