10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

RAM 是新的硬盘

  • 2008-07-08
  • 本文字数:1890 字

    阅读完需:约 6 分钟

Jim Gray 在过去 40 年中对技术发展有过巨大的贡献,“内存是新的硬盘,硬盘是新的磁带”是他的名言。“实时”Web 应用不断涌现,达到海量规模的系统越来越多,这种后浪推前浪的发展模式对软硬件又有何影响? Tim Bray 早在网格计算成为热门话题之前,就讨论过以 RAM 和网络为中心的硬件结构的优势,可以用这种硬件建立比磁盘集群速度更快的 RAM 集群。

对于数据的随机访问,内存的速度比硬盘高几个数量级(即使是最高端的磁盘存储系统也只是勉强达到 1,000 次寻道 / 秒)。其次, 随着数据中心的网络速度提高,访问内存的成本更进一步降低。通过网络访问另一台机器的内存比访问磁盘成本更低。就在我写下这段话的时候,Sun 的 Infiniband 产品线中有一款具备 9 个全互联非阻塞端口交换机,每个端口的速度可以达到 30Gbit/sec!Voltaire 产品的端口甚至更多;简直不敢想象。(如果你想了解这类超高性能网络的最新进展,请关注 Andreas Bechtolsheim 在 Standford 开设的课程。)

Tim 还指出 Jim Gray 的名言中后半句所阐述的真理:“对于随机访问,硬盘慢得不可忍受;但如果你把硬盘当成磁带来用,它吞吐连续数据的速率令人震惊;它天生适合用来给以 RAM 为主的应用做日志(logging and journaling)。” 时间闪到几年之后的今天,我们发现硬件的发展趋势在 RAM 和网络领域势头不减,而在硬盘领域则止步不前。Bill McColl 提到用于并行计算的海量内存系统已经出现

内存是新的硬盘!硬盘速度提高缓慢,内存芯片容量指数上升,in-memory 软件架构有望给各类数据密集的应用带来数量级的性能提升。小型机架服务器(1U、2U)很快就会具备 T 字节、甚至更大量的内存,这将会改变服务器架构中内存和硬盘之间的平衡。硬盘将成为新的磁带,像磁带一样作为顺序存储介质使用(硬盘的顺序访问相当快速),而不再是随机存储介质(非常慢)。这里面有着大量的机会,新产品的性能有望提高 10 倍、100 倍。

Dare Obsanjo 指出如果不把这句真言当回事,会带来什么样的恶劣后果—— 也就是Twitter 正面临的麻烦。论及Twitter 的内容管理,Obsanjo 说,“如果一个设计只是简单地反映了问题描述,你去实现它就会落入磁盘 I/O 的地狱。不管你用Ruby on Rails、Cobol on Cogs、C++ 还是手写汇编都一样,读写负载照样会害死你。”换言之,应该把随机操作推给RAM,只给硬盘留下顺序操作。 Tom White Hadoop Core 项目的提交者,也是 Hadoop 项目管理委员会的成员。他对 Gray 的真言中“硬盘是新的磁带”部分作了更深入地探讨。White 在讨论 MapReduce 编程模型的时候指出,为何对于 Hadloop 这类工具来说,硬盘仍然是可行的应用程序数据存储介质:

本质上,在 MapReduce 的工作方式中,数据流式地读出和写入硬盘,MapReduce 是以硬盘的传输速率不断地对这些数据进行排序和合并。 与之相比,访问关系数据库中的数据,其速率则是硬盘的寻道速率(寻道指移动磁头到盘面上的指定位置读取或写入数据的过程)。为什么要强调这一点?请看看寻道时间和磁盘传输率的发展曲线。寻道时间每年大约提高 5%,而数据传输率每年大约提高 20%。寻道时间的进步比数据传输率慢——因此采用由数据传输率决定性能的模型是有利的。MapReduce 正是如此。

虽然固态硬盘(SSD)能否改变寻道时间 / 传输率的对比还有待观察, White 文章的跟贴中,很多人都认为 SSD 会成为 RAM/ 硬盘之争中的平衡因素。 Nati Shalom 对内存和硬盘在数据库部署和使用中的角色作了一番有理有据的评述。 Shalom 着重指出用数据库集群和分区来解决性能和可伸缩性的局限。他说,“数据库复制和数据库分区都存在相同的基本问题,它们都依赖于文件系统 / 硬盘 的性能,建立数据库集群也非常复杂”。他提议的方案是转向 In-Memory Data Grid(IMDG),用 Hibernate 二级缓存或者 GigaSpaces Spring DAO 之类的技术作支撑,将持久化作为服务(Persistence as a Service)提供给应用程序。Shalom 解释说,IMDG

提供在内存中的基于对象的数据库能力,支持核心的数据库功能,诸如高级索引和查询、事务语义和锁。IMDG 还从应用程序的代码中抽象出了数据的拓扑。通过这样的方式,数据库不会完全消失,只是挪到了“正确的”位置。

IMDG 相比直接 RDBMS 访问的优势列举如下: - 位于内存中,速度和并发能力都比文件系统优越得多

  • 数据可通过引用访问
  • 直接对内存中的对象执行数据操作
  • 减少数据的争用
  • 并行的聚合查询
  • 进程内(In-process)的局部缓存
  • 免除了对象 - 关系映射(ORM)

你是否需要改变对应用和硬件的思维方式,最终取决于你要用它们完成的工作。但似乎公论认为,开发者解决性能和可伸缩性的思路已经到了该变一变的时候。

查看英文原文: RAM is the new disk…

2008-07-08 08:493074
用户头像

发布了 225 篇内容, 共 72.3 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

[CSS入门到进阶] 外国前端开发者说的 Intrinsic Ratios in css 是什么意思?

HullQin

CSS JavaScript html 前端 8月月更

云途加油站 | 一文读懂 Dynatrace 与Amazon Lambda 的“双剑合璧心法”

亚马逊云科技 (Amazon Web Services)

数据库 Serverless Lambda

基于STM32设计的拼图小游戏

DS小龙哥

8月月更

Flu tter开发小技巧

坚果

开源 8月月更

Docker 已运行端口映射怎么破

CTO技术共享

开源一夏 | Qiankun框架对于微前端的解耦和沙盒与实战探索心得

恒山其若陋兮

开源 8月月更

Java并发面试常见考点

浅羽技术

Java 面试 线程 并发 8月月更

老板问我要ROI,我让他先挑宽门or窄门

科技怪咖

看准六点,帮你选对客户体验管理(CEM)系统

科技怪咖

【数据结构实践】从0到1带你利用Python实现自定义集合

迷彩

数据结构 集合运算 8月月更 自定义集合

数据库中存媒体文件的字段用什么类型?一文带你了解二进制大对象BLOB

wljslmz

数据库 8月月更

4.0 SDK Workshop 纪实:一起体验多人、多屏幕共享新功能

声网

人工智能 音视频

Python 教程之输入输出(9)—— print() 中的 sep 参数

海拥(haiyong.site)

Python 8月月更

自动化测试如何解决日志问题

老张

自动化测试 日志处理

计算机接口技术复习题(1-6章)

乌龟哥哥

8月月更

头脑风暴:最长回文子序列

HelloWorld杰少

LeetCode 8月月更

微博系统“微博评论”高性能高可用计算架构

张立奎

Linux 黑客命令装逼小助手

CTO技术共享

皮皮APP夏日防溺水公益讲座 联动武汉长江救援队筑建生命安全线

联营汇聚

解决 Flutter 嵌套过深,是选择函数还是自定义类组件?

岛上码农

flutter ios 前端 安卓开发 8月月更

直播预告 | PolarDB-X 动手实践系列—— PolarDB-X on OSS 冷热数据分离存储

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

分布式雪花算法

源字节1号

前端开发 后端开发

C/CPP中int和string的互相转换详解与多解例题分析

CtrlX

c c++ 后端 数据类型 8月月更

新元联手倍市得,以数字化手段实现人才公租房项目满意度持续监测

科技怪咖

合成资产赛道风云突变,Linear Finance有望成为最具潜力的黑马

鳄鱼视界

数据点按时间间隔以及数据值分割数据块

waitmoon

算法 SLO

每日一R「14」错误处理

Samson

学习笔记 8月月更 ​Rust

从事DevOps工作应该掌握哪些语言及工具

穿过生命散发芬芳

DevOps 8月月更

悲观锁和乐观锁的区别以及实现方式

浅羽技术

Java 面试 面试题 秋招 8月月更

Dockerfile 定制专属镜像

CTO技术共享

面试中常用消息中间件对比

浅羽技术

kafka RocketMQ 消息中间件 Rabbit MQ 8月月更

RAM是新的硬盘_数据库_Steven Robbins_InfoQ精选文章