SAP 是总部位于德国的全球最大的 ERP 公司。作为一家重量级的企业应用软件公司,SAP 曾经有过一段风光的日子。

但是而后的日子也开始不好过起来。

日子不好过的主要原因是 SAP 的软件需要跑在数据库上,而备选的数据库一般来说不是 IBM 的 DB2,就是 Oracle。本来两者和 SAP 的软件配合,相得益彰,曾经一度合作得很愉快。但随着 Oracle 开始进军企业级软件市场,把手伸到 SAP 的地盘来,SAP 的日子就开始不好过起来。

Oracle 在 21 世纪初进行了一系列的并购,包括收购了 Siebel 和仁科等重要的企业级软件企业,把自己从底层数据库到企业级软件的体系补全了。这样一来,SAP 就麻烦了,因为自己的软件依赖于对方的数据库,而对方却还能够提供类似的企业级软件。

好在还有一个 IBM 的 DB2 可以用。SAP 一度和 IBM 合作,希望两者的结合可以给自己带来所谓的强强联合。但是 IBM 的 DB2 却一直面临着诸多问题,比如本身就不是市场上最好的数据库,人才流失又很严重。所谓的合作开展起来,效果却非常有限。

在这个背景下,SAP 开展了一场技术与忽悠并存的战略大跃进,也就是 SAP 著名的 HANA 战略。HANA 的出现对 SAP 和业界都产生了巨大的影响。其实施的过程可谓精彩绝伦,堪称一部大制作的“影片”。

今天我就来讲一讲这个 SAP 的 HANA 战略。

让我们先把时间倒回到 2009 年。这一年,数据库的两大顶级会议之一的 SIGMOD 在罗德岛召开。我最后一次以 PhD 的身份参加 SIGMOD,所以对这个会议印象深刻。这种会议一般都会有赞助商。出钱多的金主很多时候会给一个 Keynote 的讲座。

2009 年的金主是 SAP。这多少有点让人大跌眼镜。一个做企业级软件的公司,来一个数据库顶级会议上大把撒钱,怎么看怎么怪。

在这次大会上,SAP 董事会主席兼创始人之一的哈索·普拉特纳(Hasso Plattner)给了这样一个 Keynote:A Common Database Approach for OLTP and OLAP Using an In-memory Column Database。这个 Keynote 宣告了 SAP 要搞一个内存数据库,它的名字叫 HANA。

SAP 要搞数据库,这可是一件大事情。一个做应用软件的要进军数据库市场,说明“兔子急了要咬人”了。但是企业级软件毕竟是应用软件,而数据库是基础架构软件。就像一个“做菜高手”突然说要开始“杀鸡”,先不说对方哪里来的底气,最起码外界对这个“做菜高手”的看法,肯定是见仁见智的。

HANA 是 High-Performance Analytic Appliance 的简称。SAP 要做的这个数据库,作为一个“做菜高手”进军“杀鸡市场”的第一炮,打得很响亮。按照 SAP 的宣传,它有着市面上传统的数据库很多不具备的特性。

下面我们可以一起了解一下这些特性,这很有必要。

第一,HANA 选择了按列存储的同时支持事务处理。传统数据库是按行存储的,数据仓库近些年来才开始按照列式存储。按行存储对事务处理方便,但是不利于分析处理;按列存储则相反。但是这两者的不利于程度是有所不同的。

通常来说,一个数据库如果同时支持事务处理和分析处理,那么数据库厂商会选择按行存储,因为按列存储的同时支持高效率的事务处理是非常难的。但是 HANA 却选择了按列存储的同时还支持事务处理,这个用数据库界“老司机”的话来说就是,要么是艺高人胆大,要么是无知者无畏。

第二,做出把所有的数据都放在内存里这个假设。今天来看,内存不是很贵了,但是在 2009 年敢做出那样的假设胆子就不是一般的大了。一个数据库一旦数据都在内存里,很多传统数据库的基本假设就都不一样了,做法当然也就很不一样。

所以 HANA 在很多演示的时候,查询极快。一个在 Oracle 或者 DB2 上需要跑一天才能做出来的报表查询,在 HANA 那儿 3 秒钟搞定。对,就是这么快。当然,其实查询是精心挑选的,能够存储这么多数据的机器的配置是非常高的。

第三,因为 HANA 选择了在一个系统同时支持事务处理和分析查询,这就让 HANA 的数据不需要额外 ETL,企业也不需要为分析查询专门配备另外一份列存的数据。某种程度上,HANA 宣称自己节省了企业的消耗,也是对的。而且因为两者共享数据,分析查询的时候能够查询的数据就非常新了。这对企业来说也是非常有必要的。

第四,HANA 几乎完整地整合了 R 的功能,并且把 SAP 业务相关的很多功能直接在 HANA 内部实现了。这有点反计算机软件构架里面的封装。然而在内存数据库的环境下让数据离业务相关计算更近,无疑是一种效率上极其有效的策略。

第五,HANA 采用了现代数据库里常用的 Shared-nothing 的体系架构。这种体系架构数据被纵向按照某个主键切分,每台机器只需要负责自己的部分。这让 HANA 具备了非常灵活的资源配置,而且加了机器查询也就会变得更快,立竿见影。简而言之,HANA 的体系架构很新。

综上所述,HANA 在技术上是很有创新的,而且单纯从 SAP 公布出来的这些技术细节来看,HANA 的确是具备了在很多方面对传统数据库发起挑战的能力。所以,一个“做菜”的,看起来“杀鸡”也杀得很漂亮。很多人不得不为 SAP 精彩的 HANA 数据库疯狂打 Call 了。

由于 SAP 的这个举措,首先受到伤害的是和 SAP 合作的 IBM 的 DB2 组了。毕竟,本来是难兄难弟抱团取暖,现在变成了一个人冲锋陷阵,抛弃了老伙伴。

其次受到威胁的当然是那个坐在数据库领域第一把交椅上的 Oracle。试想一下,原来用 SAP 的必须上 Oracle,而用 Oracle 的还可以搭自己家里的企业级软件。这让 Oracle 处于多有利的地位呀!但突然之间局势就变了,SAP 有自己的数据库了,而且还很快、很厉害、很先进。接下来 Oracle 的这个生意就不好做了。

但是对 2009 年的 SAP 来说,HANA 这个吸引眼球的宣传,一下子让原本已经成为或者即将成为二流公司的 SAP 回到了聚光灯前,不管产品有没有做出来,最起码先把风头抢占了。接下来,大家关注的就是 SAP 会做出一个什么样的产品来,是让大家刮目相看,还是烂泥扶不上墙呢?