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

相关推荐
G探险者31 分钟前
Java 线程相关的三个常见接口、类
后端
学历真的很重要35 分钟前
Eino 开源框架全景解析 - 以“大模型应用的搭积木指南”方式理解(一)
后端·语言模型·面试·golang·ai编程·eino
1点东西1 小时前
新来的同事问我当进程/机器突然停止时,finally 到底会不会执行?
java·后端·程序员
AAA修煤气灶刘哥1 小时前
后端仔狂喜!手把手教你用 Java 拿捏华为云 IoTDA,设备上报数据 so easy
后端·物联网·华为
G探险者1 小时前
如何在批量创建 `DefaultMessageListenerContainer` 时避免阻塞问题
后端
我崽不熬夜2 小时前
List、Set、Map,你真的会选用吗?
java·后端·java ee
展信佳_daydayup2 小时前
01 基础篇-虚拟机网络配置
后端
uhakadotcom3 小时前
最近rust生态有啥能力更新?
后端·面试·github
long3163 小时前
适配器模式 java demo
java·javascript·后端·程序人生·设计模式·适配器模式
David爱编程4 小时前
Java 守护线程 vs 用户线程:一文彻底讲透区别与应用
java·后端