使用内存来提高I/O密集型应用性能并不是新理念,它一直都存在,在内存中处理数据的速度远比那些速写速度慢的介质要快(大概10至1,000倍)——包括t存。
在计算机的初期,性能密集型产品已经将内存作为数据缓存使用。大多数数据库都被设计为尽可能多的使用内存。也许还有人记得,早在MS-DOS时代,需要设置RAM盘来为PC存储临时数据,从系统中挤出更多速度。
现今的内存处理会把这一理念发挥到极致:采用主动内存(动态RAM)来保存当前正在运行的数据库代码和活动数据结构,并且将不变的数据库保存在内存中。这些数据库已经无须再通过主板去和外部媒体进行交互,而是优化其驻留在内存中处理的数据结构。
从历史上看,单台服务器的内存密度和内存成本是两大限制因素,但现今已可以扩展应用程序使用更大量级的内存处理技术。这包括每台服务器内存体系结构,内联/联机重复数据删除与压缩技术,使用额外的CPU计算能力(相对便宜)来榨取更多数据到内存中,而且集群和网格工具可以提升总体内存的使用效率。
内存变得更便宜、更密集。现在笔记本标配都已经比曾经的大型机内存容嗷挂大。今天,任何人都可以用信用卡便宜的从诸如亚马逊AWS那里买到云计算资源,它最近刚推出的R3高内存服务器拥有244GB RAM,费用为每小时2.8美元。预算充足的企业可以考虑具有4TB内存的HP ProLiant DL980 G7服务器,或6TB内存的Dell R920,还可以考虑使用具有32TB内存的Oracle M6-32。
内存中计算不但能够满足传统结构化数据应用程序的需求,也在大规模非结构化数据处理领域风靡一时。Hadoop集群可以利用商品服务器架设,每个结点的内存可高达128GB,实现内存中数据实时查询与计算。