如果数据库系统没有磁盘会怎么样,这是我最近读到的一篇文章,关于数据库磁盘系统的部分。其中讨论了如果数据库系统不架设在磁盘上,如果我们没有了IO瓶颈的情况下,会怎么样。

没有磁盘会怎么样
这并不是天方夜谭,在实际的工作中我们已经有了这样的系统,DISKLESS ,我们回想一个实际工作中遇到的情况。 CPU 20%
内存 40%
磁盘 IO 100%
整个数据库已经开始变慢,SQL开始积压,业务响应时间不断上升。不是CPU不够,也不是内存不足,而是磁盘成为了整个系统的瓶颈。事实上,在过去四十年的数据库发展历史中,磁盘一直都是数据库设计的核心约束条件。无论是Oracle、MySQL、PostgreSQL还是SQL Server,它们的很多设计都是围绕一个前提展开,磁盘很慢,而且磁盘容量有限。
数据库技术变得如此的复杂,全都拜磁盘系统所赐才产生了当今大量的今天我们已经习以为常的技术: • Buffer Pool • Shared Buffer • Page Cache • WAL日志 • Redo Log • Checkpoint • 索引页 • 数据页 这些技术本质上都在解决同一个问题,如何尽量少访问磁盘因为访问内存通常只需要几十纳。 而访问磁盘则可能需要毫秒级别的时间。即便是最快的NVMe SSD,其访问延迟仍然比内存慢上数千倍。所以过去数据库的大量优化工作,本质上都是让热点数据尽量留在内存 避免访问磁盘。
但是今天情况发生了变化,云计算、大规模对象存储以及超大内存服务器的出现,让数据库开始重新思考一个问题如果本地磁盘不再存在,会怎么样?
如果不是AI的到来,我们对DISKLESS的需求可能还不会这么早了来,例如自动驾驶,每天数十TB,工业遥测,每天数百TB,卫星系统PB级,视频训练集,持续增长,在这些场景下,数据库面临的挑战已经不再是如何存储数据而是如何实时处理数据数据写入后几秒钟才可见。对于传统业务影响不大。但对于AI系统来说可能已经错过最佳决策时间。因此越来越多的新一代数据库开始采用
内存索引
对象存储
无盘计算节点的设计模式。
谁正在走向DISKLESS
事实上,我们已经能够看到这一趋势。
例如:
Neon将PostgreSQL改造成Serverless架构。
Snowflake从诞生开始就是存算分离。
Databend直接基于对象存储设计。
ClickHouse开始支持S3作为主要存储介质。
PolarDB和OceanBase也正在不断增强对象存储能力。
虽然实现方式不同,但方向非常一致本地磁盘不再是真相来源对象存储才是数据库节点越来越像CPU + Memory而不是CPU + Memory + Disk。
所以后续新兴数据库是否会根据硬件的变化,转变从尽量少 内存,到全部内存的方式去发展,PB 级 SSD 集群已经逐渐进入大型企业的采购视野当存储价格不断下降时,数据库设计思路也开始发生变化。

本文分享自 AustinDatabases 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!