从系统运行的角度来看,内存数据库系统类似于MPP系统。它们的不同之处在于,内存数据库系统的每个计算节点拥有巨大容量的内存,并且大部分数据会被预先加载到内存中。SAP 公司的HANA系统就是按照这个原则来运行的。另外一些系统,比如Oracle公司的Exalytics系统,利用特殊的硬件,一个应用程序就可以管理执行多个主机。就本质来说,内存数据库系统就像是带有SQL接口的内存MPP数据库系统。
内存数据库系统的商业版本中有个重要的缺点是,其中内置了大量的硬件和软件。诚然,这些系统拥有专用设备和特定硬件,但这通常费用高昂。如果因为这些内存数据库系统准备的商用硬件来扩容内存数据库系统集群是非常方便的。举个例子,假设一个商用服务器有25GB RAM。我们要搭建1TB容量的内存数据库就需要40台以上的主机(考虑到还有其他业务需要使用这个服务器)。1TB也未必够用,但是我们的集群节点数已经达到了40个。
下面列出了内存数据库系统编程模型的几个要点特征,这些特征同样符合前文中给出的最初的大数据系统定义:
如前面的例子中所述,数据按州划分。各个节点把数据加载到内存中。
各个计算节点都拥有程序所需的执行库,并对分配到该节点的数据进行数据处理。
每个计算节点读取本地数据。一个例外是你未考虑数据的分配情况就进行数据查询请求,这时,计算任务会从其他节点来获取所需数据。
由于数据是被缓存到内存的,所以除了最初的数据加载入内存的过程外,这里不适用顺序读取数据的特性。