内存计算产品分析
本节对几个经典的内存计算产品进行研究和分析,以了解和掌握分布式内存计算领域的设计思想、设计原则、核心技术等相关知识和技能。
SAP HANA
SAP HANA(简称HANA)的第1个特点是把数据全部放入内存中存储,由于内存存储的数据有易失性,系统掉电或者重启时内存中的数据会丢失,所以针对这个问题,HANA有一个后台的异步进程savepoint (Data persistence),定时把内存数据写回磁盘。
HANA的第2个特点是充分并行编程,利用NUMA架构与并行编程技术,把大数据量和计算量分散到不同的处理器中并行计算。
HANA 的第3个特点是最小化数据传输,这对于大数据实时计算有至关重要的影响,具体的做法如下。
首先,采用合适的数据压缩技术,尽可能地压缩数据的存储空间,这样一来,当数据从内存中加载到CPU Cache中时,一个Cache Line会加载更多的数据,如果也需要I/O传输,则传输量会小很多。HANA采用了数据字典的方式来压缩数据,用整数来表示相应的文本字符串,其原理如下图所示,将Customer 与 Material两个字段抽出来,在数据库记录里就可以用两个数值型字段来表示它们,仅此一种方式就节省了很多存储空间。有限的内存可以加载更多的数据,因此数据压缩技术基本上是大数据系统的标配技术之一。
其次,下推计算逻辑到数据存储层(数据库端),即把应用逻辑和计算由应用层转移到数据库层,这非常类似于我们很少使用的存储过程所做的事情。我们在处理数据时,通常的逻辑是先把数据从数据库中读出来,再进行相应的计算处理,最后把处理后的数据写回数据库。由于在数据库和应用程序之间要通过网络传输大量的数据包,所以网络资源的开销、延时、传输速率及网络带宽都导致了数据计算性能的下降。移动计算,而不是移动数据,这也是分布式计算中重要的指导思想之一。
如下所示为HANA的架构图。