一些高端数据库已经了取消硬盘,直接把数据存在内存里。
无论是家用电器里微小的嵌入式控制器,还是企业级服务器,内存(RAM,随机存取存储器)都是其计算机系统必不可少的一个组成部分。RAM包括静态(SRAM)和动态(DRAM)两种形式,处理器工作时处理的数据就暂时存放在这里。然而,随着RAM的价格不断下跌,在大容量的持久性存储设备(硬盘)和RAM之间传输数据的传统计算模式可能将不复存在。
RAM的价格会随市场变化而出现暂时的波动,但从长期来看,其价格保持着平稳下降的趋势。回溯到2000年,那时一个1G的内存售价约为1000美元(相当于那时候的800英镑);而如今最低不到5美元(约5英镑)。这样低廉的价格为计算机的系统结构设计提供了诸多新思路。
传统数据库往往将数据存在硬盘上,然后在需要时把信息读取到RAM中,再以某种方式对其进行处理。RAM与硬盘的存储量通常会相差几个数量级。一般提到RAM用的都是GB,而硬盘则用TB。不过,随着RAM容量的增加,把更多的数据直接存入RAM,从而减少硬盘读写的次数,似乎是个提高效率的好方法。由于RAM的价格也在持续下跌,开始有人将整个数据库从硬盘读入内存中进行操作,之后再重新写回持久存储器中。而现在还有人干脆不把数据库再放回到持久存储器中,而是直接存在易失性RAM里。
内存的存取速度一般为纳秒级的,而硬盘的寻道时间通常是毫秒级的,也就是说存储器比硬盘的读写速度快了约一百万倍。不过RAM的传输速度并没有比磁盘快出那么多:RAM一般每秒传输几G,而速度快一些的磁盘也能达到每秒百M。但不管怎么说,RAM的传输速度肯定是比磁盘高出一个数量级的。
随着RAM的价格降低,一些高端企业和数据中心已经将单台服务器配上了几TB大的存储器。当然,除了需要很大的存储量以外,要想将数据库储存在RAM上,还得跨越“持久性”这一个障碍。RAM是易失存储器,每当电源关闭或者系统受到损害时,它的存储的信息都会永久丢失。这对于那些想满足“ACID”(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性durability)、力求可靠的数据库来说确实是个不小的挑战。
所幸,我们可以利用磁盘快照和日志来弥补这个缺陷。就像我们会定期将磁盘上的数据库备份一样,一个内存数据库也能进行复制备份。创建磁盘快照意味着要与其他读取过程竞争资源,所以建立检查点的频率需要在性能和恢复能力之间进行权衡。而这个缺陷也可以用日志来弥补,这种技术也被称为“更新记录”(journalling)。日志把数据备份发生的变化全部记录下来,根据它就可以从早期的快照中恢复出后期的数据版本。但不管怎样,只要数据库是保存在非持久性存储器上的,它的冗余度就会降低。
我们也可以压缩数据库,来最大限度地利用RAM的存储空间,尤其是对于那些面向列的数据系统(以列的形式存储表格)。相邻的数据属于同一种类型,表格中各列基本也是同一类型时,压缩的效果相对较好。而且,当压缩产生计算开销时,按列储存可以较好地应对庞大数据集带来的复杂请求,这也就是大数据从业人员和数据科学家们对此充满兴趣的原因了。
放眼全球数据处理量最大的地方之――谷歌等公司已将数据库的主体从硬盘转移到RAM上,因为这样可以保证以较快速度完成大量的搜索任务。但是真要在一个任务中用上超大量内存仍会遇到许多难题,因为仅凭一块主板有限的空间只能容纳一定数量的RAM,而且这么多RAM分享一块主板本身还会产生额外的延迟。
“后RAM”时代
但是到目前为止,我们很难说使用易失性内存进行数据处理是不是未来的主导方向,因为使用非易失性RAM(NVRAM)进行计算的竞争模式已经出现了。NVRAM的结构与现有硬盘的结构类似,这其中就有已为广大用户所熟知的固态硬盘(SSD)。目前,固态硬盘主要是基于NAND闪存,这种存储设备的读写速度远比普通硬盘快,但同时也有它自身的缺陷。从原理上来说,闪存是通过保持电荷来存储信息,它需要以较高的电压完成写入,而且会逐渐损耗。为了处理损耗问题,闪存使用了损耗平衡算法来控制读写,存在收益递减问题。
上图由前计算机科学教授JohnCMcCallum绘制,在图中我们可以发现,硬盘与RAM价格的下降速度非常接近。因为价格走低,SSD在数据中心和本地系统(on-premises)中被广泛使用,但是该技术的未来发展形势仍不明朗。今年二月,一篇关于谷歌公司6年以来SSD布设情况的论文揭示:闪存驱动器远不如硬盘驱动器可靠,因为它们会产生更多无法纠正的错误,尽管它们不需要频繁更换。而且,与工业指标宣称的不同,企业级的SSD实际上并不比个人用户使用的版本更可靠。
但是,其他形式的NVRAM也开始在市场出现。铁电RAM((FRAM))曾经被视作RAM和移动设备中闪存的替代产品,但业界的注意力现在转向了磁阻式RAM(MRAM)。MRAM的读写速度接近于易失性RAM,延迟时间约为50纳秒。虽比DRAM的10纳秒慢了一些,但是比起NAND闪存的毫秒级还是快上千倍。
不同于传统的利用电荷储存信息,MRAM通过不同的磁性取向来存储信息,这主要基于一种叫作磁隧道结(MTJ)的薄膜结构。“旋转切换”的MRAM已经被某些产品所使用,比如戴尔公司“EqualLogic”存储阵列,但它目前只负责少部分的日志记录功能。
自旋力矩转移MRAM(ST-MRAM)则采用一种更为复杂的结构,这样可以为未来增加存储密度留下空间。这款产品目前由Everspin公司出售,该公司最近刚刚在纳斯达克上市。正在开发同类技术的其他公司还包括Crocus、镁光(Micron)、高通、三星,自旋转移技术公司(SpinTransferTechnologies,STT)和东芝(Toshiba)。
与此同时,英特尔已经开始与镁光公司合作,共同完成一款叫做“3DXPoint”的NVRAM。根据去年官方给出的消息来看,这是一款电阻式RAM(ReRAM),属于相变内存(PCM)中的一种。因其具有多层结构的特征,为它命名时还特意增加了“3D”。英特尔公司曾宣称,XPoint的读写速度与耐用性将是NAND闪存的1000倍,储存密度会高达NAND闪存的10倍,但最近看来,这些宣称性能要打个折扣。不管最后的实测表现到底如何,3DXPoint的定价估计将会在同等大小的闪存与DRAM之间。这样的价格普通消费者和桌面用户应该不会接受,但在大规模存储领域,它的性价比应该可以超过内存和SSD。
IBM也在开发它的相变内存。和英特尔的一样,IBM的相变内存也以硫族化物玻璃作为主要的可擦写光学媒质(rewritableopticalmedia)材料。这种内存通过某种电设备将材料从非结晶态转变成三种不同的结晶态。IBM称他们的产品将在存储密度上有所突破,这也将使其售价低于DRAM。
RAM行业的竞争将影响计算领域的方方面面。对于消费者来说,如果有一些针对台式机系统的存储产品可以将内存由8G升至16G,那无疑将大大增加我们电脑日常的多任务处理速度,而那些对系统要求更高的应用,如高分辨率照片和视频编辑,从中受益更大。
在超极本市场,SSD已经司空见惯。不断增加的存储量使其有望成为机械硬盘的替代品,正式“转正”,不再是从前的“硬盘+SSD”。“三维堆叠NAND”(3DlayeredNAND)也叫做“垂直NAND”(V-NAND),它的出现意味着新一代产品的到来。凭借其出色的效能与更高的密度,其生产公司三星预测:到2020年该系列将会推出512G的消费级SSD,而其价格仅与今天1TB的硬盘相当。
对于中型企业与研究机构而言,只要软件跟得上,那么用上更快、更便宜、存储量更大的RAM也就意味着他们内存数据库的分析将更快速、更深入且更有见地。举个例子,柱状数据库管理系统SAPHANA为用户提供了可用于多种云或本地商业解决方案的平台,这使小型公司也能玩得起“大数据”。此外,IBM和甲骨文(Oracle)这样的超大企业也在使用类似的内存柱状数据库管理系统。
RAM还是影响技术普及化的因素之一。当技术变得越来越廉价且供应充足,组织规模的大小差别将不再显得如此重要。而且,小型机构还可通过合作来弥补规模的劣势。
最后来谈谈超级计算机。下一代超级计算机肯定都会尽其所能地配备更多内存。目前领跑世界的中国超级计算机“神威太湖之光”装有1300T的DDR3型DRAM,而这相对于它每秒93千万亿次浮点运算(petaflops)的速度而言已经算是相当小。这也使得它耗电较低(只有15.3百万瓦特),但恐怕限制了整体性能。
超级计算机的生产者们都在冲着“万万亿次浮点运算”1000petaflops)的目标努力着。继“京”(K)之后,日本又将发布“京二代”(post-K)超级计算机,它由日本理化学研究所(Rikenresearchinstitution)和富士通合作设计,预计将于2020年正式开始运行。它将配备镁光公司的多层堆叠式DRAM“混合式内存立方”(HybridMemoryCube),还有可能装上“3DXPoint”NVRAM。
此外,欧盟资助的超级计算机项目“NEXTGenIO计划”也在进行中。承担该项目的爱丁堡超级计算中心(EdinburghSupercomputingCentre)已经宣布,他们的原型系统将于2022年面世。这款超级计算机也将使用3DXPoint技术,这是他们在“万万亿次级”超级计算机研制中的一个重要阶段。
美国的“万万亿次”项目是奥巴马提出的“国家战略计算计划(NSCI)”的一部分。该项目预计能在2023年前制造出2台全新的百万兆次级超级计算机。虽然它们的架构设计还未最终确定,但因其注重实用性和能效,RAM必定是整个计算机的核心技术。