购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第四节

SAP HANA内存数据库

在讲SAP HANA内存数据库之前,我们先打个小比方。比如身在北京的你早上起来想喝杯牛奶,于是你买了一张飞往澳大利亚的机票,首先你先要从北京飞往香港等待几个小时来转机,然后才能飞往澳大利亚。终于你经过近20小时的飞行时间到了悉尼机场,接着你还要搭乘各种交通工具从机场辗转到牧场。可惜到达时已是半夜,你不得不再等几个小时到天亮后才能迎着晨曦喝到刚挤出来的新鲜的牛奶。看到这里你肯定会摇头说,姑且不计费用,这么做简直是谋杀我的时间!我直接去厨房的冰箱拿新鲜牛奶喝要不了1分钟的时间!

其实这个虚拟的故事主要是想说明,如果把CPU比做你,把数据比做新鲜牛奶,正如你在虚拟的故事里花费不可思议的时间才能喝到牛奶一样,CUP在现实中的确要等待漫长的时间才能拿到所需的数据。因为服务器在处理数据请求时(例如一个查询操作),CPU首先会从其缓存(SRAM )中找数据,缓存中找不到,再从内存(DRAM)中找,内存里没有,再从硬盘(DISK)上找。在当下的各种存储产品中,按照数据传输速度从快到慢排序依次为内存>闪存>机械硬盘>磁盘。磁盘目前主要用于数据备份,硬盘由于其低廉的价格(单位容量)以及良好的性能,一直以来是统治计算机系统存储的霸主,同时也是传统关系型数据库的主要存储设备。在企业级应用层面,分析员需要查询的绝大部分数据都储存在硬盘里面,CPU需要经过层层中转(硬盘→硬盘缓存→内存→CPU缓存→CPU),才能得到需要的数据。因此,服务器系统性能的指标很大一部分取决于硬盘数据传输速度的快慢。尽管人们一直以来想了很多办法提高硬盘的I/O 效率,如提高硬盘高速缓存的容量、将硬盘组成RAID 、尽量保持硬盘顺序读写等,但是与CPU和内存的速度相比,硬盘的速度仍然是计算机系统性能最大的瓶颈。在图1-3中,我们比较了当前最快的基于SAS的服务器硬盘 (SAS/15000转)和主流内存(DDR3/2400)的速度差异。

图1-3

是的,你没看错,内存与硬盘比较,传输速度提升了10倍(我们比较的是当前最先进的服务器硬盘,通常来讲,普通服务器硬盘的传输速度只有80M/S,即内存传输速度要快于普通服务器硬盘30倍),而平均I/O延时 加快了100万倍!因此,回到先前那个故事里面,CPU从内存那里调取数据,就像你直接去厨房拿牛奶一样,而从硬盘那里调取数据,则不得不等待一段漫长的时间。根据IDC的一项调查报告的数据显示,全球服务器平均80%的情况下处于空闲状态,这种无效的空转不仅影响IT系统的性能,也浪费了大量的能源。究其根本原因,就是因为硬盘的低传输速率和高I/O延时导致CPU大部分时间都在等待数据从硬盘传输过来。所以,在传统数据库查询中,硬盘设备始终是制约系统性能最大的瓶颈。那么让我们设想一下,如果我们把数据全部放在内存里面,而不用访问物理硬盘来做基于大量数据的查询和分析,将会产生怎样的效果呢?就像你直接从冰箱拿牛奶喝的愉快体验一样,对于分析和决策者而言,那绝对是一种令人振奋的体验:以往需要几天甚至几周才能完成的报表,可能会在1秒钟就展现在他们的面前。

SAP HANA内存数据库恰恰把我们的设想变成了现实。它是可以将企业的全部数据都放在服务器内存中直接进行操作的数据库。需要特别指出的是,我们这里指的“全部数据”,就是企业运营的所有数据,而不像其他一些数据仓库所做的,要先对原始数据进行筛选、聚合等处理后才存储进数据库。这样做的好处就是所有在SAP HANA内存数据库上进行的分析结果都是基于企业原始数据的,从而避免了以往数据仓库分析数据经过筛选和聚合后所带来的数据失真。因此,SAP HANA内存数据库所带来的优越性能不仅仅在于CPU对内存读写比对硬盘读写快,更重要的是,SAP HANA内存数据库从根本上抛弃了许多传统硬盘数据库管理的方式,以全部数据都放在内存中为基础,对数据管理进行了新的体系结构的设计,在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度比传统数据库的数据处理速度快很多,一般在10倍以上,理想情况甚至可以达到上千倍。举个例子,上海寰融信息技术有限公司(GFT)是一家2010年成立的金融软件平台公司。其产品的一大核心价值是为客户提供对金融类数据基于数学模型的决策分析,而且是穷尽式的分析。自从GFT公司向客户提供了一个基于SAP HANA平台技术的策略分析软件以后,GFT客户的交易策略整个方式发生了革命性的变化。SAP HANA强大的内存数据库和内存计算引擎,使得分析运算速度超快,其中最快的运算速度比客户过去的系统要快1万倍,过去需要几个小时得出的一个投资策略,现在几秒钟、几分钟就能完成。

对于SAP HANA内存数据库可以把企业的全部运行数据都放在内存中,或许你会有这样的疑问,目前企业级的数据库数据量往往以TB或者PB级计算,这么多数据能全部放到内存中吗?SAP给出的答案是肯定的。因为把全部数据放到内存中的两个关键条件,即内存的价格问题和系统平台技术支持已经成熟。从内存价格角度来讲,十几年前的内存价格相对于硬盘来讲是相当昂贵的。以2000年为例,当时1500美元只能购买1GB内存。但是随着每GB内存价格随时间推移而不断下降(从图1-4中我们可以看到近12年来内存价格的变化曲线),到了2012年,与2000年时相比,内存每GB的单价下降了近240倍。可以说以前非常昂贵的内存在今天已经可以被企业大规模采购并使用了。从系统平台的技术来讲,以往基于32位系统的x86服务器最大只能支持4GB的内存,而今天基于64位系统的x86服务器内存理论上可以达到几乎无限制的18 EB(即180亿GB)。目前最新的企业级服务器单机最大已经能支持2TB的内存,而将这些服务器组成服务器集群后,企业服务器系统则能支持上百TB的内存。

图1-4

那么,SAP HANA内存数据库都有哪些特点呢?下面我们来逐个分析一下:

一、不受数据类型限制

SAP HANA内存数据库可以访问任何数据。当企业需要非SAP应用程序中的运营数据,或希望在现有分析模型的基础上进行扩展时,任何数据源均可作为SAP HANA的数据基础。通过SAP HANA平台集成的SAP BusinessObjects数据整合组件 ,可以非常灵活地将非SAP运营数据快速加载到SAP HANA内存数据库中。这样,企业就可以通过极其精简的流程创建一个特定业务情景的完整视图。这一特性最大的好处在于,企业可以保留原有的分析应用,并将之快速部署到SAP HANA平台上而不用开发新的应用,为企业节省了大量的时间和费用。

二、不受数据量限制

早在2012年SAP中国商业同略会(2012 SAP SAPPHIRE China)期间,IBM大中华区董事长及首席执行总裁钱大群先生表示,IBM与SAP的合作已经有40年历史,这一次IBM很荣幸地以100个节点[100台四路Xeon E7(10核心)服务器]、100TB主内存、4000CPU核心的新集群系统成为最强大的SAP HANA系统,证明了SAP HANA强大的扩充能力。与此同时,SAP执行董事会成员、技术及平台产品负责人史维学博士介绍,该系统是当时世界上最大的内存计算数据库系统,也是世界上性能最快的内存计算系统。IBM和SAP此次共同推出这套SAP HANA系统,其内存容量超过了大部分企业的数据产品的应用容量,得益于SAP HANA内存数据库优异的数据压缩技术(列存储,10倍以上的数据压缩),可以实现PB级别数据库的存储。

三、既可用做分析,也可以用做事务

SAP HANA内存数据库是一个内存数据库的混血儿,在技术层面,它同时支持OLTP和OLAP技术。在存储层面,它不仅包含行存储,也包含列存储,而且还支持基于对象存储的数据库技术。但仅从这些话中,你可能无法体会到其开创性的变革之处。而看完下面的解释之后,你可能会由衷地说:“Wow,SAP HANA内存数据库真的非常了不起!”

首先我们要先了解两个名词,它们分别是“OLTP”和“OLAP”。

OLTP(On-Line Transaction Processing),联机事务处理。OLTP是传统的关系型数据库的主要应用。其主要用于基本的、日常的事务处理,涵盖了一个组织的大部分日常操作,如购买、库存、制造、银行、工资、注册、记账等,它是面向顾客的,用于办事员、客户和信息技术专业人员的事务和查询处理操作。在过去几十年的时间里,OLTP技术已经发展得比较成熟,其基本特征是用户的原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。这样做的最大优点是计算机系统可以即时处理输入的数据,并及时地做出反应。衡量联机事务处理系统的一个重要指标是系统性能,具体体现为实时响应时间(Response Time),即用户在终端上输入数据之后,到计算机对这个请求给出答复所需要的时间。OLTP是由数据库引擎负责完成的,旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。支持OLTP的数据库通常具有以下特征:

● 支持大量并发用户定期添加和修改数据;

● 反映随时变化的单位状态,但不保存其历史记录;

● 包含大量数据,其中包括用于验证事务的大量数据;

● 具有复杂的结构;

● 可以进行优化以对事务活动做出响应;

● 提供用于支持单位日常运营的技术基础结构;

● 个别事务能够很快地完成,并且只需访问相对较少的数据;

● OLTP系统旨在处理同时输入的成百上千条事务。

由这些特性可以看出,由于OLTP技术更偏向于处理大量并发的对数据库记录的添加、修改、删除等访问量较少、需要很快完成的事务,故而如果用于查询操作,其只能满足一些简单的、数据量较小的查询。例如你在ATM柜员机查询你的账户余额,事务员查询某笔订单的状态等。如果你要做银行整体的现金流报表或者看企业整体的销售与库存关系的查询分析,那么OLTP是不适用的。如果我们要对企业的大量业务数据进行复杂的查询分析怎么办?这就要用到下面要说的OLAP技术了。

OLAP(On-Line Analytical Processing),联机分析处理。在过去的二十多年中,大量的企业利用关系型数据库来存储和管理业务数据,并建立相应的应用系统来支持日常业务运作。这种应用以支持业务处理为主要目的,即我们前面提到的OLTP,它所存储的数据被称为操作数据或者业务数据。随着市场竞争的日趋激烈,企业更加强调决策的及时性和准确性,这使得以支持决策管理分析为主要目的的应用迅速崛起,这类应用主要用来弥补关系数据库管理系统支持的不足,统一分散的公共应用逻辑,并在短时间内响应非数据处理专业人员的复杂查询要求。与OLTP技术面向的主要是事务操作人员不同,OLAP技术是面向分析人员、管理人员的,其目的旨在提供分析人员、管理人员快速直观访问数据的一种途径,使分析人员、管理人员能直观地从大量数据中获得有用信息以提供决策依据。通常来讲,OLAP技术对数据库访问也有别于OLTP不断地对数据库进行增删改操作。它是不涉及数据库操作的,即访问是只读的,但是这种访问不是简单地记录属性的检索,而是为了从数据中获取有用信息而针对大量数据的查询,往往一次需要查询上百万条以上数据。正因为如此,联机分析处理具有灵活的分析功能、直观的数据操作和分析结果可视化等突出优点,从而使用户对基于大量复杂数据的分析变得轻松而高效,以利于迅速做出正确判断。它可用于证实人们提出的复杂的假设,其结果是以图形或者表格的形式来表示对信息的总结。

通过前面对OLTP和OLAP的讲解,我们可以了解到这两种数据处理技术在数据来源、数据内容、数据模式、服务对象、访问方式、事务管理等方面都有不同的特点和要求。由于传统的基于OLTP技术的关系型数据库偏重于企业日常事务处理工作,通常是对单一或一组记录进行修改和查询,它注重的是如何在多并发操作时减少响应时间,保证数据的安全性和完整性。而对于OLAP技术来讲,由于制定决策分析要对大量的历史数据进行复杂查询和分析,因此分析性处理操作可能要连续运行几个小时甚至几天的时间来完成这些工作,从而消耗了大量的系统资源,对系统性能方面有非常大的影响。与此同时,为了使分析结果更加准确,决策分析型处理需要大量的基础数据,这些数据有来自企业内部的,也有来自企业外部的。来自企业外部的数据又可能来自不同的数据库系统,在分析时如果直接对这些数据进行操作会造成分析的混乱。对于外部数据中的一些非结构化数据,传统的关系型数据库常常无能为力。

为了解决这个问题,20世纪80年代中期诞生了数据仓库的概念。到了20世纪90年代,数据仓库已从早期的探索阶段走向实用阶段。业界公认的数据仓库概念创始人比尔·恩门(W. H. Inmon)在《数据仓库》( Building the Data Warehouse )一书中对数据仓库的定义是“数据仓库是支持管理决策过程的、面向主题的、集成的、随时间变化的、持久的数据集合”。构建数据仓库的过程就是根据预先设计好的逻辑模式,从分布在企业内部各处的OLTP数据库中提取数据,并对其经过必要的变换最终形成全企业统一模式数据的过程。当前,数据仓库的核心仍是RDBMS 管理下的一个数据库系统,通过这个数据库系统,OLAP服务器可以为一些前端工具或应用(比如报表或BI系统)提供服务。从图1-5可以看出,企业为了满足事务和分析处理的不同要求,往往要建立两套不同的数据库系统,即为企业日常运作提供支持的基于OLTP的关系型数据库系统和为企业制定决策分析准备数据的数据仓库系统。而在流程图的最后,作为直接面向决策者的前端工具需要非常复杂的步骤(业务数据→ 提取、转换、上载→数据仓库→OLAP服务器→前端应用)才能得到最基础的业务数据,以至于对于新录入的数据,有时甚至要等待几天或者几周才能被反映到前端应用,所以基于这种模式的分析和决策无法达到真正的实时。因此无论从成本角度还是时间角度,其对于企业来说需要的付出都是非常巨大的。

图1-5

针对这个问题,SAP HANA平台开创性地把用于事务型处理(OLTP)和用于分析型处理(OLAP)的数据全部放在同一个内存数据库中。这一变革彻底消除了以往企业日常业务运行数据和决策分析数据需要分别处理的壁垒,大大提高了企业事务处理的速度,简化了前端工具取得数据的步骤和时间,使用户通过基于SAP HANA平台的前端工具能真正做到实时分析而无需等待。而这一特性,也是SAP HANA所具有的变革性的特性之一。与此同时,正是由于SAP HANA内存数据库能很好胜任传统数据库的存储和访问工作,这种传统和创新型技术的结合使得开发人员可以为程序选择最好的技术,并且在需要时二者可以并用。

综上所述,SAP HANA内存数据库从概念上来说是通过利用内存数据存储提升数据库查询执行速度的软硬件结合体,与此同时,SAP HANA内存数据库也能很好地胜任传统数据库的存储和访问,例如它也有基于行式存储的表可供使用。因其不受数据量、数据种类的限制,既可用做分析,也可以用做事务;没有数据缓存,也不需要任何调校,或者是预先聚合、预先处理的特性,意味着开发人员可以基于SAP HANA平台访问任何数据源,开发基于任何存储方式的应用。它不需要像传统数据库那样用复杂的编程技巧,如提前计算值(物化聚集)或者创建数据构架来加速基于大量数据的查询访问。这种全新的数据库体验,带给数据库应用开发的灵活性和简易性将是无可比拟的。并且,SAP HANA内存数据库为了保持用户操作尽可能小地对数据库产生改变,采用了只对原始数据库的增量变化进行记录的方式。其数据是增加或插入到一个表列而不是就地修改,这种方式带来的好处不只是速度上的提升,而且由于保留了所有的旧数据,你的应用程序可以随时高效地访问数据记录在所有时间段内的数值,并可以依此提供该记录随时间变化的数据视图。 rBdZ7SWluJq6KYARZPXWiKIkDM9WtIjkRBl73jSP6Ub9vkjiV15LUfbx7ih1rZGz

点击中间区域
呼出菜单
上一章
目录
下一章
×