内存计算技术的前世今生
无论是我们的手机、笔记本计算机还是公司的服务器,我们都明显感受到内存越来越大,在很长一段时间内(包括现在),我们仅仅把大内存当作缓存来使用。除了关系型数据库,我们最熟悉的就是缓存中间件如Memcache、Redis等,它们用来简单缓存Key-Value的数据,而大量的数据计算仍然离不开关系型数据库。
其中的原因在笔者看来,主要有以下几点。
(1)直到近几年,我们所开发的大量软件都是面向企业使用的MIS系统,绝大多数数据被存放在关系型数据库中,甚至图片这种明显不合适的二进制数据也被尽量存放在数据库中,而大部分软件工程师要做的工作就是围绕数据库的CRUD操作及页面展现而年复一年地重复编程。
(2)由于之前的系统产生的数据量不大,数据处理的逻辑也不是很复杂,同时不追求实时性,因此传统的关系型数据库及数据仓库产品足够应付,无须更高端的技术。
(3)长期以来,内存都是比较昂贵的硬件,容量越大的内存条价格越高,机械硬盘则不断刷新性能与存储容量的新纪录。这种情况更加巩固了关系型数据库的地位,并促进了大量的基于硬盘(文件)的数据处理系统的发展。
突如其来的互联网时代则是一个全新的软件时代。一方面,系统的用户量庞大,系统中的业务数据也随之迅速膨胀,数据量越来越大,运算越来越复杂;另一方面,由于互联网用户的个人意识增强,在其个性化诉求增加的同时忠诚度大大降低,导致我们不得不努力提高系统的响应速度,提升用户体验,同时使系统变得更加智能以吸引和留住用户。
那么,问题来了,如果提升系统的响应速度,则如何让系统变得更加智能呢?
这个问题很复杂,但关键点只有两个:内存计算及更快的大数据分析技术。如果深入分析,则内存计算技术可以说是基础。大家都知道,Spark可以说是很火的开源大数据项目,就连EMC旗下专门做大数据的Pivotal也转而投入Spark技术的开发中。那么,Spark 的核心和关键技术是什么?就是内存计算。下图给出了各种存储的速度对比,可以看出内存计算达到传统机械硬盘的10万倍,因此Spark尽可能地将数据放入内存中运算,尽可能得到实时结果,这种新颖大胆的设计思想使得Spark从一开始就超越了Hadoop。