探索中国CIO人才现状 | 第四季调研报告
SAP HANA数据存储:传统硬盘的瓶颈问题
2015-07-01  来源:techtarget

SAP HANA平台有各种各样的应用场景,这也意味着客户的实施方法有许多种选择,关键是如何挑选最适合他们需求的实施方案。

在《Implementing SAP HANA》这本书中,介绍了SAP平台在现实场景中的运作原理,并给出了实施建议和成功案例供参考。本系列文章节选自《Implementing SAP HANA》,介绍了行存储和列存储的各自特点,以及SAP HANA的数据存储方式如何提升空间压缩和性能。

在第一篇文章中,我们就来谈谈基于传统磁盘的数据库性能问题,以及我们如何解决这一问题。

传统硬盘的瓶颈问题

在SAP HANA中存储数据与我们在传统基于磁盘的数据库中存储有很大的差异。最明显的第一点就是:SAP HANA是数据完全存储在内存中的关系型数据库管理系统,而不是存储在传统磁盘上的。

完全在内存中存储数据是一个变革性的思路,反对者第一反应就会说“整个应用的数据或者数据仓库结构在内存里不可能装得下。”事实上,这样一种传统想法要花较长时间才能扭转。反观现在许多领先的供应商,他们都有内存数据库解决方案,都在声称支持内存平台。数据导入SAP HANA并由其它外部应用使用,执行速度快的难以置信,尽管是演示数据。响应时间简直太快了。

我们在Decision First Technologies实验室进行测试,从客户那里获取到由SAP BusinessObjects Web智能报表生成的SQL数据,并把支持数据都导入到SAP HANA。然后我们把Web智能报表提供的相关查询在SQL Server数据库命令行执行。原始的基于SQL Server的查询运行时间如何呢?超过一小时。查询进行了优化,SQL Server数据库中存储的数据也进行了优化,但是坦率地讲查询仍然相当复杂,因为数据量太大了。该报表对于客户的业务来说非常关键,所以长达一小时的运行时间等待数据结果是不能忍受的。

为了进行POC测试(概念验证),我们为客户把数据迁移到SAP HANA,使用与Web只能报表完全相同的抽取SQL语句。我们没有针对SAP HANA对数据库表和结构进行优化,只是把数据从SQLServer迁移到SAP HANA,也没有对SQL进行优化。实际上我们做的只是一次复制粘贴的操作。那么新的SAP HANA查询运行时间如何呢?只用了4秒。

尽管我们没有对数据或者报表做任何变动,运行时间却变得几乎是即时响应了。毋庸赘言,对于客户来说,这就是一个很有说服力和吸引力的案例,而我们现在还尚未针对SAP HANA对存储和引擎流程建模技术进行优化配置。

前面这个例子是真实发生的案例,把数据导入到SAP HANA后该客户立即从中获益。内存计算有令人难以置信的性能优势,SAP不擅吹嘘,但事实确实如此。

然而,正如其它任何伟大的软件平台一样,开发者必须考虑平台的需求并拥抱可以囊括所有优势的技术。这就是为什么我们需要讨论SAP HANA的原因。SAP HANA的性能非常好,它可以忍受一些不良设计,仍然能获得惊人的性能。我们相信你只要加以注意就可以避免这种不良设计,满足开发工作,利用SAP HANA平台特性实现需求。当你在项目一开始就权衡设计因素,考虑如何在架构中存储数据时,唯一值得的选择就是SAP HANA。

传统磁盘自从出现投入应用以来就是个性能瓶颈。磁盘离CPU越近,数据整理、搜索、排序和处理起来就越快;在SAP HANA中你可以完全把传统物理磁盘拿掉以获得最大性能实现。下面举例,我们拿最常见的系统和数据库处理流程来描述。

1、数据是通过屏幕表单中用户输入收集而来的。

2、数据被传递给数据库,这个过程我们都清楚,就是输入输出(I/O)信息传递过程。

3、数据读写时操作的可能是数据库服务器上内存中的缓存区。

4、数据最终会存储到传统磁盘中。

不使用缓存区的IO传输执行需要较长的处理过程。产生额外时间消耗的原因包括物理磁盘片的转速,驱动头为读取磁盘片需要执行的机械操作,还有很多其它因素会影响基于磁盘的处理流程,带来更多的延时。这是一个相当历史悠久的处理方式,基本上自从计算机诞生以来就没怎么变过。传统数据库试图通过定位具体系统提供磁盘缓存控制器来进行一定性能提升。

缓存数据的方法可以加速对旋转磁盘数据访问的过程,所有主流数据库供应商都与磁盘制造商合作非常密切,以便优化数据库处理过程中的具体磁盘操作需求。大多数情况下,数据库供应商寻求缓存技术的研究,尽可能限制最终的磁盘交互量。通过利用各种缓存控制器可以简单地避免磁盘寻址和写次数这些本地问题。所有这些努力都是因为磁盘速度比较慢,性能最多也只能优化到这个程度了。

解决这个问题

我们今天依赖的许多技术都是在磁盘速度访问慢的基础上建立起来的。例如,联机分析处理(olAP)技术(通过在物理上调整数据结构使得度性能更好),联机事务处理(olTP)技术(目标是使数据写性能尽可能快),甚至最近的列存储技术(目标是压缩以最小化存储空间,增加访问数据的速度)。重要的是,要记住所有这些技术核心都是为了传统磁盘以及其性能挑战而设计的。在接下来的文章中,我们将会简要地介绍这些技术,并谈谈他们如何都能在SAP HANA中适用。