去IOE的另外一条路径:全内存数据库弯道超车

作者:何鸿凌 中国移动大数据平台架构规划

作者新浪微博@BigData分析

老祖宗留下了《易经》这本书,告诉我们世界的本质是“变化”的,“变化”之间有相关性。比如云计算的兴起是由于计算机的带宽快速增加引起的,大数据的兴起是由于数字化进程引发的。

当今的IT界最重要的“变化”就是摩尔定律。曾几何时,程序员们沉醉于用C语言精妙的语句节省了数KB 内存空间,现在大家都用上了逻辑更加清楚、更易于大规模协作的JAVA,而对语言效率看得不那么重要。计算和存储能力变得越来越廉价的“变化”引发了其上软件产品的“变化”。

软件产品构建在以CPU、内存、外存(磁盘)为边的三角形之上。摩尔定律对三条边的影响程度各有不同。内存的性价比每15个月倍增,CPU的性价比每18个月倍增,但磁盘存储(主要的外存)的性价比增长并不遵循摩尔定律(因为它是磁的不是晶体管的)。更加重要的是:内存带宽的增长是符合摩尔定律的,而磁盘的带宽(从IDE到SATA、SAS)提升速度甚至还落后于磁盘容量性价比的提升。

因此,代表内存的那条边伸长得太快以至于三角形无法维持其形状,构建在上面的软件产品面临惨烈的“颠覆”,以ORACLE为代表的数据库软件(DBMS)首当其冲,因为它们是数据密集型的。按照数据库使用内存和外存的特点,可以分为三个时期:

内存昂贵的时期:摩尔定律的效果还在累积,内存远比外存昂贵。大部分的数据、索引、日志和临时空间都只能放在外存磁盘之上,内存起到的作用只是缓存。ORACLE、DB2、SYBASE等皆是在这个时代的产物,遗憾的是它们似乎历史的包袱太沉重,现在大半个身子还停留于此时代,怪不得数据库大师Mike.Stonebraker称他们为30年前的技术。

SSD外存崛起的时期:后SSD逐渐成为可选择外存之一,而SSD的容量性价比是符合摩尔定律的,带宽提升也非常快(如PCIE接口)。于是业界有一些改进尝试。比如阿里巴巴当前的交易系统在去IOE后是采用的MYSQL数据库Sharding方案,并将数据“全部”存储在PCIE接口的SSD上。各传统数据库也发展出自己的Storage Group方式来支持支持SSD做“热”数据存储的选项。比如Oracle推出了一体机Exadata,可以选择将“部分”数据缓存到到SSD上,但其大规模的存储还是利用磁盘。另外有一些技术型公司,如沃趣科技,推出了将Oracle的“全部”数据放到SSD上的方案,取得了很好的效果。

内存颠覆外存的时期:全内存数据库其实早就出现了,例如被Oracle收购的TimeTen、被DB2收购的SolidDB、韩国的AltiBase等,但是由于之前内存还是一个比较昂贵的选择,因此内存数据库只是小规模使用。随着摩尔定律效应的累计,内存的价格持续下降、速度持续增加,量变成为质变,VoltDB、HANA、MemSQL等一系列练就了独门功夫的内存数据库如雨后春笋般出现。他们的共同特点就是所有数据都存储在内存中。这其中每个数据库又有自己的特点,比如VoltDB颠覆了原有数据库设计理论,通过全局时钟和预编译的方法来进行并发控制,避免了锁等开销,很好地适应了OLTP类应用;HANA通过内存列存储和极限压缩来支持更快的大数据分析任务;MemSQL重新设计了Mysql的存储引擎部分,使之更加适应内存。

我们现在已经可以清楚地看到内存替代外存的趋势,因此可以断言:今后内存将是存取数据、索引的主要发生地,而不仅仅是缓存某些数据。SSD可能会作为快速数据持久化的手段,保证断电以后当前数据的安全。而速度更慢的机械磁盘可能作为备份的手段,替代磁带保证历史数据的可用性。

如果认可而摩尔定律推导的这个趋势,就必须审视它会对未来的系统架构和软件带来何种的影响。预写日志、日志检查点、回滚和前滚、B树索引等现有数据库特性都是基于使用机械磁盘的假设。机械磁盘寻道时间长故随机存取速度慢,这与SSD和内存等高速随机存取器有非常大的差别。为了适应机械磁盘的特点,数据库管理系统(DBMS)利用了大量的代码将随机存取变成顺序存取。比如日志,一个事务写一次日志很自然,但是为了要顺序存取,就要缓存一批日志再一次性写入磁盘。这就又带来了事务持久化的新问题,因此需要大量的代码为之服务。B树索引也是为磁盘顺序存取优化的,在SSD和内存等随机存取器中显得完全没有必要。

如果要使用高速且随机存取的内存作为主要存储器,那么最好对整个数据库的架构进行全新的设计。可以看到VoltDB和HANA正是这样做的,抛弃了很多传统的包袱,轻装上阵。Oracle和DB2的历史包袱太沉重,他们不可能抛弃自己的遗产,只能采取优化的方式,比如ORACLE 12c中也推出了内存列存储,DB2新的BLU特性也允许激进地使用内存,但其底层的数据存储,还是为机械磁盘来优化的。

凯文.凯利说颠覆总是从边缘开始,因为只有抛弃传统、独辟蹊径,才能发现新的技术范式,在数据库领域也是如此。可以预测要不了几年,内存数据库就会从事务处理系统开始全面取代磁盘数据库的领先地位。很高兴的是,我们看到联想、华为、南大通用等国内的软件公司已经认识到这一点,已经在内存数据库方面进行了颇多的探索,有的已经有了相应的产品。南大通用最近准备筹资5000万用于内存数据库产品的进一步研发。

看到未来的趋势,顺应潮流,拥抱变化的世界,这种方式的“去IOE”是弯道超车。这是《易经》告诉我们的道理。

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

原文发表时间:2014-07-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

解密千万密码:透过密码看人性

20220
来自专栏FreeBuf

解密千万密码:透过密码看人性

对于密码,我们已经知道了不少。比如,多数密码短小、简单、且容易破解。但我们对一个人选择某个密码的心理原因却所知甚少。在本文中,我们分析了包括企业CEO、科学家...

18960
来自专栏云加头条

智能云上手指南:如何接入腾讯云的自然语言处理能力?

本文将为广大云开发者介绍如何介入腾讯开放的自然语言处理能力,即文智自然语言处理。

84900
来自专栏张善友的专栏

依赖注入是否值得?

在博客的世界里进行了一场关于使用依赖注入(DI)之优点和缺点的有趣讨论。论题是:依赖注入是否真的值得? 讨论始自Jacob Proffitt,他撰文解释他的观...

19590
来自专栏企鹅号快讯

老鸟程序员才知道的40个小技巧

▲ 40条真言,希望对进阶中的程序朋友有所帮助。 1、重构是程序员的主力技能。 2、工作日志能提升脑容量。 3、先用profiler调查,才有脸谈优化。 4、注...

19580
来自专栏杨建荣的学习笔记

运维平台元数据稽核小结

数据库运维中的元数据建设都是重中之重,如果元数据不具有参考的价值,那么后续的操作都会受到影响,但是元数据的建设也应该是分成几个步子来走,首先得能够收集到元数...

15540
来自专栏.NET技术

整理自己的.net工具库

  今天我会把自己平日整理的工具库给开放出来,提供给有需要的朋友,如果有朋友平常也在积累欢迎提意见,我会乐意采纳并补充完整。按照惯例在文章结尾给出地址^_^。

9220
来自专栏数据的力量

职场干货|高效工作的信息搜集及整理术

13820
来自专栏LET

CPU简介

34090
来自专栏我是攻城师

Java与Node.js的较量--一场史诗之战

79860

扫码关注云+社区

领取腾讯云代金券