对海量数据进行实时分析处理,一直是数据仓库、OLTP/OLAP、商业智能等领域的软件厂商所普遍关心的课题。前不久,SAP推出了一款面向实时商业智能领域的高性能分析应用软件(SAP High-Performance Analytic Appliance ,简称SAP HANA)。其中,受到业界广泛关注的是,SAP HANA采用了以往大家很少听说过的“内存计算(In-Memory Computing)”技术。而且在IBM、戴尔等厂商推出的HANA解决方案中,无一例外地使用了基于英特尔至强E7平台的服务器。
下面我们来分析一下,到底什么是内存计算,它在企业级关键业务领域有着怎样的应用前景,然后看看英特尔至强E7为什么能够很好地支持这类应用,从而一起为海量数据实时处理打造一条宽广的“高速公路”。
1 内存计算:对海量数据进行实时处理
今天,许多企业已经面临越来越多的数据要处理,而且对这些数据需要进行实时的分析。为此,SAP一直在重新构想数据仓库的运行模式,并提出了内存计算的理念。那么什么是内存计算呢,我们不妨从两个角度来理解。
首先,从计算存储技术的角度看,由于服务器在处理数据时,CPU首先会从其缓存中找数据,缓存中找不到,再从内存中找,内存里没有,再从硬盘上读取。在传统数据库查询中,磁盘访问时间是一个主要的瓶颈。研究发现,如果让查询在读写速度快很多倍的内存中进行,而不用访问物理磁盘,将会大大提升处理性能。试想一下,对于商业智能应用而言,由于数据库一般都较大,少则几个GB,多则成百上千个GB,如果把整个数据库都搬到内存中去运行,又会怎样呢?
因此,所谓“内存计算”,实质上就是CPU直接从内存而不是硬盘上读取数据,进行计算、分析,是对传统数据处理方式的一种加速。内存计算非常适合处理海量的数据,以及需要实时获得结果的数据,比如可以将一个企业近十年几乎所有的财务、营销、市场等各方面的数据一次性地保存在内存里,并在此基础上进行数据的分析。当企业需要做快速的账务分析,或要对市场进行分析时,内存计算就能够快速的按照需求完成。
其次,从应用的角度来看,在商业智能方案中,在线交易处理(OLTP)和在线分析处理(OLAP)是两种不同的应用,其中OLTP系统需要对发生的业务进行实时记录,因此要处理的是大量简单、小规模、同时发生的交易;而OLAP系统是对OLTP提供的数据进行分析,以支持业务决策,因此处理的交易数量相对较少,但更为复杂。使用内存计算的SAP HANA的交易型和分析型引擎能够同时应对这两种应用,内存计算技术实际上是把现在交易型的数据库和分析型的数据库合并为一个内存数据库,其结构如下图所示:
谈到SAP HANA的具体应用场景,SAP中国区首席技术官张侠曾对媒体举过这样一个例子:航空公司。航空公司的主要特点就是信息量大,且有很多实时信息,一般会有这样两个系统:一是客户相关的系统,里面有各种客户的信息,如谁是金卡会员,谁希望坐在靠窗或者靠走道的座位,商务旅客与私人休闲旅客的不同偏好等等;另一个是定票系统,定票系统会把每个航班对应的飞机型号、座位数量、飞机维修、天气等等信息综合在一起。高速的内存计算技术能够综合所有以上这些情况,根据不同场景进行更好的匹配。比如,利用高速分析的能力对航班晚点的情况进行调配,通过分析发现某些型号的飞机可以在某个飞机转场。这样就能把天气等各种影响降至最低,使客户尽可能坐在他喜欢坐的位置上,并设计好定价策略做到既能满足客户的需求,又能为航空公司带来更好效益。
据了解,SAP BusinessObjects战略性人力规划是HANA中的第一款新产品,使企业管理者可以实时模拟相关业务场景,快速分析复杂数据关系并审视被建议的组织结构调整对企业业务产生的影响。企业管理者和人力资源高管可以使用预测性建模功能模拟企业人员总数需怎样增长、人员配置应如何变化等,这使他们能就人员配置或调整做出基于数据的明智决策,尤其是在企业一项收购行为完成以后或者是当企业要进入一个新市场领域的时期。
2 X86服务器如何满足内存计算需求
通过上面的分析,我们知道,为优化海量数据实时处理的内存计算模式对于底层服务器提出了更高的要求:CPU够不够快?内存够不够大?系统够不够稳定可靠?实际上,英特尔与SAP早在10多年前就已经开始合作,不断共同推动IA架构服务器上SAP应用的性能。下面我们就来看看最新的英特尔至强E7又是如何针对SAP HANA进行优化的。
2.1 处理器的性能
早期处理器性能的提升主要依赖于主频的提高,即CPU在每个时钟周期内可以执行更多的指令。但由于能耗与散热条件的限制,这种方法在2005年左右碰到了障碍。于是业界开始转向多核处理器的设计,即每个处理器内包含多个相互独立的计算内核。在多核处理器之前,英特尔开发了超线程技术,允许一个处理内核可以在同一时间执行两条指令线程,从而更好地利用CPU的片上资源。今天,多核、多线程、高可扩展的SMP架构,为x86服务器奠定了运行SAP应用的基础。
与上一代至强7500相比,至强E7的内核数量由8核(16线程)增加到了10核(20线程);同时得益于QPI总线架构,基于至强E7的服务器可以从双路扩展到四路、八路,直至256路。这些技术进步使得SAP HANA可以在单一系统内获得更多的计算资源,其性能指标可以随硬件升级而线性扩展,用户甚至可以通过部署1000以上内核的系统实现更复杂的实时分析。
2.2 内存的性能
对于SAP内存计算应用来说,内存子系统的性能是否强壮显得非常重要。一方面,64位操作系统的普及,使得今天的x86服务器内存可以超过32位的4个GB,理论上达到几乎无限制的18 Exabyte(即180亿GB);另一方面,随着平台技术的发展,以及每GB内存价格的下降,服务器系统内存容量越来越大。今天服务器的内存容量已经可以用TB来计算,每1TB即1000GB。
具体到至强E7来看,则主要通过大容量缓存、更高内存带宽、以及更大容量的内存来满足这一需求。比如,至强7500的三级缓存是24MB,至强E7达到了30MB,这使得SAP HANA应用中,CPU计算内核可以直接从缓存中读取更多的数据,访问速度因此更快。在内存方面,以四路服务器为例,至强7500系统可以支持16GB内存条,最大内存容量为1TB,而至强E7系统可以支持32GB的内存条,系统内存容量扩大到2TB。
当然,在SAP HANA应用中,快速的I/O也很关键,至强E7通过QPI互连总线,大大提高CPU与内存之间、CPU与CPU之间以及节点之间的数据传输速率,降低延迟。
2.3 高可用性
面向海量数据进行实时分析的系统,其对稳定可靠性的要求是不言而喻的。在这方面,新的至强E7服务器平台在安全可靠性(RAS)方面也提供了更多的支持。比如Double Device Data Correction(DDDC)就对SAP HANA非常有用,允许当内存同时出现两个错误时,也可以恢复。又比如Machine Check Architecture Recovery(MCA Recovery)技术使得SAP HANA可以与操作系统一起,从许多无法纠正的内存错误中恢复,在许多场合下可以不用停机就能恢复数据。在至强E7中,类似这样的RAS技术还有20多条。
在一个针对32亿条POS机销售记录的复杂模型中,英特尔与SAP进行了联合测试,测试表明,跟上一代的至强7500相比,至强E7的性能提高了1.37倍。另外,同样基于至强E7平台,英特尔超线程技术性能提升1.21倍,NUMA技术提供1.07倍,睿频加速(Turbo Boost)技术性能提升1.04倍,如下图所示:
3 内存计算的前景展望
据了解,在SAP HANA的研发过程中,得到了IBM、惠普、思科、富士通、英特尔等硬件厂商的支持,同时也有可口可乐(希腊)、未来集团(Future Group)、喜利得(Hilti)在参与。比如喜利得(Hilti)是一家为全球建筑市场提供设备和技术的企业,拥有2万名员工,其中三分之二直接从事与客户打交道的销售与工程工作,因此每天会发生超过20万次客户接触。通过SAP HANA,该公司将交易与分析系统进行了融合,在早期测试中,搜索和分析5300万条客户数据记录的时间从原来的2-3个小时,降低到了2-3秒。
许多服务器厂商也已经推出了基于英特尔至强E7处理器的服务器,并针对SAP HANA开发了相应的解决方案,如IBM的x3690 x5、x3850 x5服务器,戴尔的PowerEdge R910服务器等。IBM宣称,其SAP HANA工作负载优化方案可以使基于SAP的ERP数据分析应用达到每秒处理1.3TB的数据量,以及每小时进行10000次复杂的组合查询分析报告。
未来,随着新型内存技术如相变内存(Phase Change Memory,PCM)、英特尔虚拟化技术、硬件图形加速技术、更多CPU内核技术的发展,以及内存价格越来越低,内存计算想必会为我们在做数据挖掘与分析、商业智能分析时提供一条更宽、更广、更快捷的“高速公路”。