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

冷热分离——Java全栈知识(36)

之前在面试的时候有老师问:
我看你使用了水平分表,但是如果有些 1%的数据占了访问量的 90%,而剩下 99%的数据只占了访问量的 10%。这种情况怎么处理。

1 、冷热分离

1.1、什么是冷热分离

冷热分离指的是在处理数据时将数据库分为冷库和热库,冷库指用于存放走到了终态的数据(冷数据)的数据库,热库用于存放还需要修改的数据(热数据)的数据库。

1.2、什么情况下使用冷热分离?

从冷热分离的定义我们可以知道当业务需求涉及到冷热数据,表数据量增长速度快或数据量较大时,我们就该考虑是否使用冷热分离解决方案了。比如:
1)数据走到终态后,只有读没有写的需求。
2)用户能够接受新旧数据分开实现业务,比如查询新旧数据的时候分开操作。

1.3、如何判断一个数据到底是冷数据还是热数据?

一个数据是冷数据还是热数据,需要根据实际的业务需求来制定判定条件。满足热数据条件的归为热数据,满足冷数据条件的归为冷数据。

判定条件可以是表里的 1 个字段或多个字段组合的方式组成。
时间、状态等都是比较适合用作判定条件的字段。

比如,我们管理一个订单系统,针对订单主表,我们可以使用下面两种方式作为冷热数据的界定:

方式 1:使用“下单时间”字段作为判定条件,3 个月内的订单数据作为热数据,3 个月前的订单数据作为冷数据。
方式 2:使用“完结状态”字段作为判定条件,未完结的订单作为热数据,已完结的订单作为冷数据。
关于判断冷热数据的逻辑,这里还有 2 个注意要点必须说明:
1)如果一个数据被标识为冷数据,业务代码不会再对它进行写操作;
2)不会同时存在读冷/热数据的需求。

2、垂直分表

如果业务场景是针对于某几个字段会有很高的并发量的话,我们就可以对宽表进行垂直分表。

例如:文章表中含有文章基础信息,文章简介,文章内容几个字段。
但是例如文章的内容的访问量是要比文章基础信息要少很多的,而且一般文章内容这些字段还会比较大,非常影响磁盘 IO 和网络 IO

针对于这种现象我们就可以进行垂直分表,将原本的文章表分为文章基础信息表和文章内容表,这样就可以很好的解决。

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

相关文章:

  • 了解Selenium中的WebElement
  • OpenCV facedetect 人脸检测官方示例项目配置
  • 自定义Laravel Artisan风格:打造个性化命令行体验
  • CTF之网站被黑
  • Electron学习笔记(一)基础环境
  • 【C语言】栈的实现(数据结构)
  • 前端三大主流框架对比
  • AOP~面向切面编程介绍
  • Android SurfaceFlinger——GraphicBuffer的提交(三十三)
  • 创维汽车滁州永通体验中心开业仪式暨超充车型区域上市会圆满成功
  • 【PHP】系统的登录和注册
  • 2024.7.29 刷题总结
  • WebSocket程序设计
  • ES(ElasticSearch)倒排索引
  • Android Studio Build窗口出现中文乱码问题
  • java生成随机数
  • 动态定制深度学习:Mojo模型与自定义训练算法的无缝切换
  • 昇思25天学习打卡营第19天|DCGAN生成漫画头像
  • 排序题目:按照频率将数组升序排序
  • 实分析与测度论问题的分类
  • 动态代理更改Java方法的返回参数(可用于优化feign调用后R对象的统一处理)
  • Redis缓存数据库进阶——Redis与分布式锁(6)
  • 网络芯片(又称为PHY网络芯片)
  • 01 Go Web基础_20240728 课程笔记
  • 嵌入式学习Day12---C语言提升
  • 6.6 使用dashboard商城搜索导入模板
  • 一文讲透useMemo和useCallback
  • 【环境变量】安装了一个软件,如何配置环境变量?
  • 重生之我当程序猿外包
  • 我想给 git 分支换一个名字,应该怎么做?