当前位置: 首页 > news >正文

数据库架构演变过程

在这里插入图片描述

🚀 ShardingSphere 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 ShardingSphere 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🍀 一.海量数据存储问题及解决方案
      • 🥦 1.1 遇到的问题
      • 🥦 1.2 解决方案
    • 🍀 二.项目架构演变 - > 数据库架构演变
      • 🥦 2.1 单体应用架构 - v1
      • 🥦 2.2 集群架构 - v2
      • 🥦 2.3 集群架构(主从复制+读写分离)- v3
      • 🥦 2.4 集群架构(主从复制+读写分离+缓存) - v4
    • 🍀 三.总结
    • 💬 四.共勉

🍀 一.海量数据存储问题及解决方案

随着大数据时代的到来,如何存储海量数据成为我们面临的一个重要的问题,数据的量级也是成指数的增长,从GB到TB到PB,传统单体的关系性数据库已经无法满足需求。

🥦 1.1 遇到的问题

传统的关系型数据库在处理海量数据时遇到了诸多挑战,例如性能瓶颈、存储空间浪费、扩展性差、用户请求量大等等问题。

🥦 1.2 解决方案

合理的数据库架构能够提升数据库的性能,如分布式、主从同步、分库分表等方式。

🍀 二.项目架构演变 - > 数据库架构演变

项目整体架构的演变流程如下图所示:
注意:下面的内容主要学习的是在整个项目架构演变过程中,【数据库架构】技术的演变过程!

在这里插入图片描述

🥦 2.1 单体应用架构 - v1

此时项目是一个单体应用架构,我们经常会在单台服务器上运行我们所有的程序和软件。

在项目运行初期,各种表都会存储在同一个数据库中,每个表都包含了大量的字段。在用户量比较少,访问量也比较少的时候,单库单表不存在问题。

存在的问题

因为机器都是单台,随着我们业务规模的增长,慢慢的我们的网站就会出现一些瓶颈和隐患问题。

🥦 2.2 集群架构 - v2

随着访问量的继续不断增加,单台应用服务器已经无法满足我们的需求。所以我们通过增加应用服务器的方式来将服务器集群化。

存在的问题

采用了应用服务器高可用集群的架构之后,应用层的性能会得到明显的提升,但是数据库的负载也在增加,随着访问量的提高,所有的压力都将集中在数据库这一层。

🥦 2.3 集群架构(主从复制+读写分离)- v3

应用层的性能得到明显的提升,但是数据库的负载压力在增大,那如何去提高数据库层面的性能呢?

我们可以使用主从复制+读写分离一定程度上可以解决问题。

存在的问题

随着用户量的增加、访问量的增加、数据量的增加依然会带来大量的问题,所以我们还需要进行改进。

🥦 2.4 集群架构(主从复制+读写分离+缓存) - v4

随着访问量的持续不断增加,比如我们电商项目中的秒杀活动,会出现许多用户访问同一内容的情况,出现大量的热点数据,对于这些热点数据的访问,如果每次都去数据库中进行查询的话,那么会对我们的数据库造成极大的压力,所有我们没必要每次都从数据库重读取,这时我们可以使用到缓存技术。

存在的问题

缓存只能缓解读取压力,数据库的写入压力还是很大;随着数据量的继续增大,性能还是很缓慢

🍀 三.总结

系统架构从v1演变到v4这个阶端,所有的数据都还在同一个数据库中,虽然我们采取了集群化、主从复制、读写分离、增加缓存的方式,但是随着数据库的压力持续增加,数据库的瓶颈仍然是个最大的问题。为了解决这个问题,接下来我们将学习对数据库的库和表进行垂直拆分和水平拆分。

💬 四.共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/113074.html

相关文章:

  • webpack 静态模块打包工具
  • 万界星空科技/免费开源MES系统/免费仓库管理
  • 【暑期每日一练】 Epilogue
  • Go微服务实践 - Rpc核心概念理解
  • Effective Java笔记(27)消除非受检的警告
  • Dapper
  • Python基础知识(一)
  • QTthreadPool 程序
  • python注册机制Registry
  • 【Megatron-DeepSpeed】张量并行工具代码mpu详解(三):张量并行层的实现及测试
  • 【SpringBoot学习笔记】02. yaml配置注入
  • 【初阶C语言】指针的妙用
  • 链表——LinkedList类的概述和实现
  • 快六一啦,学习CSS3实现一个冰淇淋动画特效
  • VSCode CMake vcpkg 整合
  • c++ | win vscode
  • 算法-快速排序
  • SSM项目-博客系统
  • Android Gradle Plugin 编译
  • 如何快速掌握水土保持方案编制
  • 前端笔试---acm模式
  • 国联易安网页防篡改保护系统“渠道招募”启动啦!
  • JavaScript--WebStorage
  • elementui 的 dialog 常用逻辑总结
  • ip网络广播系统网络音频解码终端公共广播SV-7101
  • 【Winform学习笔记(七)】Winform无边框窗体拖动功能
  • 【Nginx】静态资源部署、反向代理、负载均衡
  • 二、框架篇
  • [LitCTF 2023]Http pro max plus
  • 科技的成就(四十九)