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

相关推荐
uzong7 小时前
软件工程师必须要掌握的泳道图
后端
panco681207 小时前
Go1.26 新特性:两全其美的 net.Dailer 方法
后端·go
李拾叁的摸鱼日常7 小时前
Redis 实现仓储单据异步提交技术方案
java·后端
风的归宿557 小时前
监控利器:java异常监控
后端
踏浪无痕7 小时前
我们是如何把登录系统从“一行JWT”升级成企业级SSO的?
后端·面试·架构
源代码•宸8 小时前
分布式缓存-GO(项目整体架构简介、Ubuntu 22.04 64位安装GoLang、安装Docker、解决Go module 的依赖问题)
经验分享·分布式·后端·ubuntu·缓存·docker·golang
一 乐8 小时前
智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·小程序
ChinaRainbowSea9 小时前
Spring Boot3 + JDK21 的迁移 超详细步骤
java·spring boot·后端·spring
IT_陈寒9 小时前
Python 3.12 新特性实战:10个提升开发效率的隐藏技巧大揭秘
前端·人工智能·后端
老华带你飞9 小时前
旅游|基于Java旅游信息推荐系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端·旅游