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

相关推荐
IT_陈寒12 小时前
Vue3 性能优化实战:从10秒到1秒的5个关键技巧,让你的应用飞起来!
前端·人工智能·后端
VX:Fegn089512 小时前
计算机毕业设计|基于springboot + vue健身房管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
资深web全栈开发12 小时前
Go语言从1.18到1.25版本功能更新详解
开发语言·后端·golang
想用offer打牌12 小时前
JDK动态代理为什么基于接口而不基于类?
java·后端·面试
用户2986985301412 小时前
如何在 C# 中创建、读取和更新 Excel 文档
后端·c#·excel
纸上的章鱼烧12 小时前
Spring注解源码解析-@Component
后端
VX:Fegn089513 小时前
计算机毕业设计|基于springboot + vue心理健康管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
掘金考拉13 小时前
从原理到实战:JWT认证深度剖析与架构思考(二)——数据透明 vs 无法撤销
后端
熬了夜的程序员13 小时前
【Rust学习之路】序
开发语言·后端·学习·rust
用户21903265273513 小时前
实现Spring Cloud Sleuth的Trace ID追踪日志实战教程
java·后端