阿明荐文
这是一个长文,有故事,有花边,有内涵,有技术,有大咖。作者飞总是一位旅居西雅图的华人,从2008年起开始从事大数据相关的基础构架研究和开发。见多识广,加上亲力亲为的研发实践,自然对数据库这个领域谙熟的飞总,当然也少不了他从大洋西岸带来的八卦。
和consumer市场上的硝烟弥漫,大数据云计算横行一样,在企业级市场上也一样充满了竞争。这个市场最初的时候是SAP占据了ERP,而底层的数据库则主要为Oracle和IBM占据。自从Oracle这个野心勃勃的公司开始了一系列的收购,甚至很多是恶意的收购,譬如PeopleSoft,譬如BEA,眨眼之间,做底层的公司开始有了上层应用。而那个上层很漂亮却没有底层数据存储支持的SAP则裹足不前,越来越有二流公司的模样。当然,同期的Microstrategy早就是一个二流的样子了,至今死不死活不活的那个德行。IBM目前来看也有死不死活不活的前景,我只是看不到IBM的前途在哪里。
今天我们讲HANA,一个广大IT宅不太熟悉但是在Database领域却有一定知名度,而在企业级应用市场举足轻重的东西,出自SAP这个从来都不是做数据库和底层系统的公司。
Michael Stonebraker梦碎
作为故事的开头部分,我们还会涉及一个图灵奖获得者Michael Stonebraker,一个获得图灵奖的商人和卖了大半打公司的教授,以及一些我亲身经历的八卦。
让我们把时间先退回到2009年的SIGMOD。作为数据库领域最重要的两大会议之一(另外一个是VLDB),2009年的大会keynote多少显得有点点的格格不入。在会议上,SAP的董事会主席,创始人之一,已经在大学任教的 Professor Hasso Plattner给了一个这样的talk:
A Common Database Approach for OLTP and OLAP Using
an In-Memory Column Database
这宣告了HANA作为SAP企业战略的新的重心的开始。
作为一个数据库,HANA有着很多的创新。但是更重要的是,Doctor Hasso在已经退居二线很久之后,以着敏锐的眼光和卓越的见识,在整个行业的关键时刻和BigData即将兴起的时候,以力挽狂澜的方式站出来,以比别人早了3年多的时间在正确的道路上迈出了对SAP来说极其关键的一步,今天回头去看,这实在是非常卓越的成就。这是为什么SAP今天在企业级市场上依然引领潮流,并且第一次对Oracle的核心领域Database系统造成了实质性的伤害,以至于Oracle慌忙的推出了一系列的产品跟风,包括最新的Oracle 12c in-memory database。
我们先讲个故事,至于故事的主角HANA和Michael Stonebraker的详细情况,我们留到下篇文章来细聊。但是有一点先提一下,Michael Stonebraker算得上是database community里呼风唤雨的人物。他手指抖一抖,整个学术圈加半个industry都得摇三摇。 介绍人物不贴图片不好,贴了又怕人家告我侵权,那就只好贴个我和大神的合影吧。请忽略那个胖的要死又颜值巨低的我。
本文作者飞总和Michael Stonebraker的私家合影
2009年开会的时候,我不巧起来的比较晚,到keynote 现场的时候就坐到了第二排。前排坐的当然是这位大神,此外还有David Lomet等微软几个大牛古董级别的人物,我想做database 研究的人一定知道我在说的是哪些人了。台上Hasso一边讲,台下的Michael就一边不停的骂:
This is the worst keynote that I have ever heard.
三个月以后和David Lomet约饭,吃饭途中聊起这个事情,David Lomet非常开心的笑笑说,Hasso坏了Michael的生意,所以Michael特别的生气。那么这门生意是怎么回事呢?大家如果记性好的话,我曾经写过一篇从database的陈年公案看如何有理有据的胡说八道。那篇文章的作者和这个Michael算得上是一伙人,在database圈子里很大的一个山头。坏了人家生意可不是什么好事情。只是我想还是先卖个关子,等下一篇仔细介绍这个拿图灵奖的商人的一些故事的时候再来详细介绍吧。今天的主要任务是先挖个坑。
Michael Stonebraker的生意经
Michael Stonebraker,1943年出生,2015年获得计算机界有诺贝尔奖之称的图灵奖。这是一个传奇的人物,在计算机界尤其在做database系统的人里面无人不知无人不晓,有着无数的崇拜者。同时也是database的community的一座大山,说说话有着很多的影响力。我作为一个小虾米,其实不具备资格去客观公正的评价这样一个人。但是作为讲故事的一部分,不妨给出自己一个极具有偏见的评价:一个拿了图灵奖的business man,一个开了很多公司又卖了很多公司的教授。
Stonebraker最开始始于UCBerkeley,当时做了database历史上颇具有影响力的Ingres系统。很多时候人们把Ingres和SystemR相提并论,作为关系数据库原型系统的先驱之一。不可否认,作为这个时候的Michael是受人尊重,值得我献上膝盖的。Ingres的另外一个成就是Stonebraker把一个research prototype做成了一个产品,并且正正经经的和IBM以及Oracle堂堂正正的竞争了一段时间。所谓行百里者半九十。Research community在这方面,几十年如一日的建设各种玩具,一个又一个。没有多少人愿意把玩具真正做成产品。所以最近在BigData领域非常红火的Spark出自UCBerkeley,这个传统早在很多年前就已经有了。无论从任何角度上来说,我觉得都值得我去尊重,也值得每个做数据库系统研究的人去认真思考。很大程度上我是厌倦了这个圈子里自娱自乐的状态,所以对做研究发SIGMOD VLDB的兴趣基本上没了。当然我并没有因此贬低发SIGMOD VLDB的价值。事实上,让我来以此作为谋生,我也不能保证自己一年下来能不能发出几篇来。始终是件不容易的事情。
Ingres的商业化并不成功。按照Stonebraker自己的观点,是因为Oracle抄袭了IBM新出来的SQL语言而Ingres使用了更为先进的语言。结果先进的被落后的淘汰了。至于刺眼是否属实,我想我生的太晚,错过了那个时代,只能从故纸堆里看蛛丝马迹,貌似还有销售和运营的问题。
Michael Stonebraker卖掉了Ingres,然后开始了新的project。Postgres是其中最著名的一个,如今成为开源database的两大支柱之一,另外一个是MySQL。然而此位从此也走向了一条说不清楚好还是不好的路途,简单来说就是做project,开startup,然后吹起来,卖掉。Postgress给卖给了Informix,当时第四大database vendor。Informix的人觉得此人如此之牛,请了他做CTO。然后他在任上成功的把Informix卖给了IBM。还好IBM没有再请他继续做CTO了。
我想2000年左右的Michael一定不再是1980年的Michael。有钱,有名,又卖了不少公司。所以做项目,开startup,卖公司成了他的套路。那么,我们客观一点说,他对database的理论和系统是不是做出了什么样breakthrough的影响了吗?其实我想任何一个东西单独拿来看,估计都不能说是。他做系统很多,但是Oracle的funder们做系统也很牛,从这个角度来说,是不是图灵奖应该给他们呢?这个图灵奖的争议很多,但是且等后面再详细谈。而坊间传闻的他是不是在抄袭其他人原创的idea,这尤其是很有意思的话题。譬如说大家去找MonetDB去聊聊天,他们会不会觉得所谓column store其实是自己先做的呢?以至于2015年VLDB的时候c-store的论文被确认为10 year best paper,MonetDB的人就没去开VLDB了。当然,那个一直以来不是那么讨老人喜欢的SIGMOD,老早就开搞double-blinded review的SIGMOD,第二年就给MonetDB颁了个奖。这也算得上是以牙还牙以眼对眼了。
大概在2007还是2008年的时候,Stonebraker觉得自己手头的牌差不多了,就发表了一篇论文,忘记是在维也纳的VLDB还是温哥华的SIGMOD了。当时我还是DB小白的时候,读起来觉得我身处在Database变革的最好的时代,热血沸腾啊。这篇论文大致的想法是,database作为一个通用的系统已经存在很多年了,又作OLTP的又作OLAP的,又贵又笨拙的,不符合时代发展潮流了。以后的时代应该是专业的database做专业的事情,比如说column store要做OLAP,row store去做OLTP. 现在回头看,自己还是太过于幼稚了,容易上当受骗。那个时候Michael手里已经攒了一摞牌了:
c-store,著名的column store,后来改名叫Vertica,再后来被HP这个傻子买了。
h-store,著名的row store,做transaction的,改名VoltDB,至今没卖掉。
StreamBase, 上一波里遗留下来做streaming的,后来终于卖给TIBCO了。
SciDB,array database,做科学计算的,刚开始做没多久。
Michael已经不是当年的Michael了,他可以呼风唤雨告诉整个research commuity未来的发展方向,以及买他手头一摞的公司了。这就是今天来看,被SAP那个从来没做过database的傻帽co-found给坏掉的生意。我们再来看看,2009年的keynote,说得到底是什么:
A Common Database Approach for OLTP and OLAP Using
an In-Memory Column Database
哇,我Michael刚定好了生意经,column-store给OLAP, row-store给OLTP,你就跳出来说要做一个同时能搞定两者而且又非常快的column-store。谁允许你说column-store可以做OLTP的。我给你盖章了么?所以那个c-store倒是给HP买了,那个h-store至今无人问津。坏人生意不是挡人财路么?坏了Michael的生意的HANA,在database的research community到底能有多受待见呢?我们下回再详细讲HANA的故事。
心黑胆肥的SAP
花开两枝,讲完黯然神伤的Michael和他可怜的卖不掉的H-store,我们来看看SAP的葫芦里卖的什么药。以事后诸葛亮的态度来说,SAP演出了一场大戏,从研发到宣传到销售到并购,很多东西是不是精心策划我无从判断,然而起码从结果上来说,可谓心够黑胆够肥。
HANA是High Performance Analytic Appliance的简称,它作为一个新型的数据库,有着一些其他数据库所不具备的特点和创新性,我们先了解一下这些主要的创新性:
首先,HANA是第一个支持ACID的transaction 语义的column-store。这应该是一个非常了不起的成就。虽然说实际上实现起来并非极其困难,但是对transaction的协议的改动还是很多的。当然这也是Michael很不喜欢HANA最根本的原因,捞过界了。
其次, HANA做了一个在09年看来非常大胆的决定。就是这个产品以堆高大上硬件的方式,把几乎所有的数据都放在内存里。想想看内存的速度和硬盘能是一个量级的么?所以这使得SAP精心准备的例子显得非常的牛。一个在Oracle或者DB2上需要一天才能完成的报表,换上HANA之后只需要3秒钟。对,亮瞎狗眼,只需要3秒钟。当然,对不起,您得升级硬件,买很多很多很多的内存,最好还要很多很多很多的core。
再次,HANA推荐在同一个系统上同时处理OLTP的业务和OLAP的业务,这完全避免了传统BI的ETL(extract, transform ,load)的过程,使得分析变得非常的实时。数据非常的fresh。
再次,HANA几乎完整的整合了R的功能,并且把SAP业务相关的很多功能直接在HANA内部实现了。这有点反计算机软件构架里面的封装。然而在内存数据库的环境下让数据离业务相关计算更近无疑是一种效率上极其有效的策略。
最后,现在的HANA是一个shared nothing的体系架构。数据被partition,每台只负责自己的部分。这让HANA同时也具备了比较灵活的资源配置和高效的资源利用。当然其实这个体系结构也有弊端,如果查询的key并不是partition key或者对partition key 有functional dependency的话,那查询需要并行读所有的数据。未必会慢但是很耗CPU资源。这个做法其实和很多key-value store的做法很像。而传统数据库一般是shared-everything的体系结构。在大数据面前,无疑是一个更为落伍的处理方式。
然而心黑和胆肥其实体现在SAP怎么样去运作和商业化HANA。 HANA2010年的时候挑了几个高富帅企业做内测,然后在2011年前后开始针对大型有钱的主推开。HANA的硬件是需要通过认证的,内存从64GB起,在10年的时候这样的机器几万美元是至少的。而HANA的软件则卖到了30万美元起的价格了.
从2011年到2014年,HANA一贯以来都实行非常高的价位,基本上就是只有土豪才能买得起的。市面上对HANA的抱怨基本上都被这蛋疼的价格所吸引了,然而正是因为价格高,用户不多,HANA不但获得了源源不断的钱,更是获得了非常重要的形象问题:高大上。不但如此,这几年的限制还给了HANA宝贵的时间去真正提高产品。土豪用产品有一个特点,HANA怎么宣传怎么用,比较傻白甜,所以很多HANA的缺点暴露的机会其实不多。
HANA的大胆还体现在HANA的宣传上。比如说面对老对手Oracle,SAP说,你们代表着过去,HANA才是新时代新硬件新体系下面的东西,我们是未来。这招对土豪们尤其管用。土豪不差钱,中国石油差钱还是民航差钱,要的就是最新最贵最牛13的东西。于是一圈圈的土豪都从Oracle上面转到HANA上,虽然HANA其实并没有ready。这些土豪里面,中国的土豪在最初的一段时间内贡献了大部分的比例,果然是敢为天下先的为SAP添砖加瓦的土豪们。当然随着产品的成熟,日本和欧美的大企业也越来越多的进到HANA的高端客户里来。
应该说,这是这么多年来第一次有人对Oracle的基本盘造成了动摇。这之前不管是DB2还是SQL Server,无非跟在后面跟屁虫一样的吃点残羹冷炙,算不得威胁。三板斧干死Oracle, 真的很牛。想来Oracle商业上这么牛的公司,居然也有瞎眼的时候。从实际行动上来看,Oracle一系列的发布从Timesten,Exalytica,Exadata,到Oracle 12c In-Memory Option,简直是亦步亦趋的证明了自己就是一个追随者,而SAP才是内存数据库的开拓者。所以土豪们更懒得去理那个亦步亦趋的Oracle了。Oracle是自己把自己作成了一个追逐者,其实在2011年的时候如果Oracle够冷静,还是可以发现HANA只是个不成熟的玩具的,就不至于匆忙因对了。我想这种商业上的成功在企业级市场是非常罕见的。
HANA的另外一个牛掰的地方就是敢吹,每次都是新功能新特性先做一个半成品,就开release出去,在客户文档里面大肆吹多牛多牛,实际上bug一堆,然而因为我下面要讲到的一点,这并没有成为它的阻碍。举个例子,HANA在2011年的时候连high availability都还不具备,居然就开吹HANA怎么样通过一个cluster的机器来解决failure的问题。拜托,胆肥成这样不容易啊。
然而仅仅靠这些还是不够的,HANA的另外一个很牛的地方是疯狂开发疯狂release,在SAP推出市场以后,基本上做到了半个月到一个月一个release,每次release老的半成品的bug被小白鼠反馈回来修得差不多了,新版本又增加了一些半成品。4年下来80多个release。更夸张的是,每个版本的release的功能相差还是挺大的,半年后和半年前是两个样。我们都是软件开发的,只能说这说明2010年卖给土豪的版本,连个毛胚都算不上啊。30万美元买个毛胚大家怎么想?人傻钱多?奇怪的是用户还很吃这一套。做了小白鼠,架不住人家修的快啊。
HANA的另外一个牛的地方在于,SAP把这个作为公司战略高度的产品来推广。销售卖的业绩要看HANA卖了多少。各个产品组的新feature必须先支持HANA。总之是从宣传到销售到市场到研发一切以支持HANA为最高优先级。这种全力以赴的状态,在一个业已成熟的企业级软件公司,无疑是一场豪赌。
当然SAP知道自己很跛脚。SAP的传统数据库相关的积累太过薄弱,所以三板斧使唤完的时候就没救了。SAP另外一件偷偷摸摸做的事情是收购一个数据库厂商。其实当时市面上最好的选择大家都知道Sybase。这个曾经的第三大数据库厂商,因为决策失误的问题,90年代末卖了一份源代码给微软,做NT系统下的数据库,这后来就成了赫赫有名的SQL Server。买了源代码的人迅速超越成了第三,最近又成了第二。这个被迫成为第四的厂商越发难以为继。而SAP则偷偷的瞄准了它,给买了。我想这绝对是Oracle失算的地方。
获得了Sybase的加持以后,SAP HANA的体系立刻变得完整起来。举个例子,以前是全部内存的。但是总有人没钱不是土豪,买不起太高端的,怎么办?HANA后期的完整解决方案里面就有cold data存磁盘的办法,当然用的是Sybase那买的技术。另外一个特别重要的是实时备份技术,这在任何商用数据库里都很成熟但是HANA是一直裸奔的。买了Sybase,就迅速的集成了Sybase Replication Server。让SAP偷偷的买成了Sybase,绝对是一盘大棋里关键又险恶的一步,成功了,一下子就获得了Sybase仁波切的加持,各种各样缺少的东西都有现成的,失败了,迟早HANA的各种缺陷都会暴露出来。
等Sybase到手,关键技术integrate起来,2015年的HANA已经是一个各方面非常领先的内存数据库解决方案,即便如Oracle也已经无法有任何的实力可以撼动了。而且对不起,以前实施SAP总要搭个Oracle卖,现在通通的都变成HANA,想想,SAP要赚多少钱,Oracle要损失多少亿。这个时候HANA终于开始廉价倾销,各种选择都可以了。而树已大,风吹不动了。心黑胆肥的SAP不但树立起内存数据库的正统,更名正言顺的开始倾销其业已成熟的产品。够Oracle好好喝几壶的了。
自娱自乐的DB研究圈子
往下写故事就需要一些背景知识了,所以这就开始稍微偏点题。
关系数据库是一个近40年的东西。在计算机领域,任何一个东西如果存在了近40年而没有本质上改变什么的话,那就可以认为是一个非常非常古老的东西了。在关系数据库兴起的时候,最早做这个东西的很多人,都做出了很多贡献,这当然包括了Michael Stonebraker,也包括很多现在很有名的人,比如David Dewitt, 比如Phil Berstein,比如Paul Larson等等。然而不得不说,我刚开始读PhD的时候每次开会SIGMOD VLDB台上发言的正是一群老头子,等到我PhD毕业,又工作了很多年以后,台上还是那群老头子。计算机发展是如此的迅速,而这些老头子们几十年如一日的在舞台上表演,那么是这些人一招先步步领先呢,还是这些个会议其实都已经老朽不堪了呢?
某种程度上,我必须说,很多很多的创新都在工业界。今天学术界,至少在数据库领域可以狠命推动整个产业前进的能力正在越来越弱。而这个圈子里面的确是一个等级森严讲究出身门第的地方。每年的博士论文拿最佳奖项的,通常来说,多少导师都得需要有点点的江湖地位。不然的话,其实是没戏的。而会议上唱主角的,则很多时候是一群老头子和老头子们的徒子徒孙们。所以当2015年Michael Stonebraker拿到图领奖的时候,整个的VLDB都洋溢在一群老头子欢欣鼓舞和一群群的人给老头子们祝福的状态。而2009年的SIGMOD则有一场关于关系代数30年的讲座,台上的老头子们忆苦思甜讲述当年年轻的他们是怎么样努力的构建了今天的这个数据库的学术圈。听着这些讲座,看着这些活动,确实会让我们这些新进来的人有无限的感慨。夕阳无限好啊,老头子们依然年轻,完全没有近黄昏的感觉。
中国人进这个圈子比较晚,然而现在也在里面发展出了自己的圈子。这个以海外澳洲,新加坡,香港,以及一些北美欧洲,最近又加入了一些中国大陆高校的老师的群体。这个团体在国内红红火火颇有面子,然而仔细观察来看,其实和美国的主流团体的老头子们,基本上还是各玩各的状态。有例外,但不多。中国人传统强项挖坑一般不在关系数据库里,比较多的是spatial,top-k,skyline,还有做做privacy。然后就是哪里热往哪里灌了。我想新加坡和香港一直都是这方面的主力军了。
我进入Database这个领域开始做PhD的时候,正值这个圈子里面的前面一波坑退去,那个时候主流的坑一个是XML,一个是Streaming,两个每年都有很多论文发表出来。当然后来XML被证明只是个configuration的文件格式比较合适,而Streaming这几年在大数据的实际应用中确实越来越重要。然而所谓挖坑灌水,那是需要费尽心思死命的灌。灌到所有可能性都灌完。
一个新坑,probabilistic database在这两个坑灌无可灌的时候起来了。祖宗是University of Washington的Dan Suciu。Dan是一个很和蔼的长者,做理论强,数学家,发家于XML。这个大坑正式送他上天了。接下来的是Stanford的Jeniffer Widom,数据库领域两大派系之一的代表人物插了这脚进来。另外一派则是和Michael共舞的Wisconsin派。后者不论是工业界还是学术界在数据库领域都可以和stanford相庭抗理,甚至大部分时候都更牛一些。
于是乎满世界的都是probabilistic database,那几年的几乎所有的SIGMOD VLDB都在做。我当然也不能免俗,迄今为止,我引用数最高的论文,大概几百个引用吧,就是关于这个坑的。中国人,包括海外的中国人尤其发挥了自身的优势,源源不断的涌现出各种各样的top-k,各种各样的probabilistic假设。
我很佩服学术圈的人先赴后继挖坑灌水的能力。从大牛到小牛到不牛的大家都说这个东西好,是个大宝藏。然而必须承认,不能产生实际效益的东西无外乎皇帝的新装,总有一天会凋零的。就像SAP扛着HANA的旗帜告诉大家说,我SAP才是内存数据库的领导者,你们这群做研究的,都不知道在干什么鬼一样,这场轰轰烈烈的probabilistic database的挖坑灌水运动中,成就了无数个Phd,让无数个教授拿到了Tenure,也让一些人上了天。但是过去之后终究是然并卵,什么都没有留下来。
而自己不愿意变化,外面总是会有人来打脸的。HANA这个脸打的不算太大。有个很evil的公司叫Google,一巴掌拍过来,三驾马车一出,BigData从此走向了历史舞台。当然现在的数据库的会议都在不断的拥抱BigData,可是君不知,这些文章最初发表的会议是OSDI,一个操作系统的顶级会议。和数据库半毛钱的关系都没有。
这让我毕业以后越发的觉得挖坑灌水固然好玩,发论文固然有成就感,到一定程度以后就没意义了。无非是自娱自乐的一种方式。当然我并不否认,国外的博士教育还是带给了我很多的东西,包括我讲故事的能力。今天我能在这里闲庭信步的给大家讲故事,而且还讲得不错,多少都得益于那惨无人道的五年里面无数次写和修改论文的过程。
有关打脸的故事我们会慢慢的讲下去,今天先到这里,正好也应该去看美国总统的辩论了。
未完待续。
以上内容由飞总授权转载,版权所有,侵权必究,转载请授权。
飞总的个人微信公众号:飞总的IT世界面面观
飞总,一位旅居西雅图的华人,祖籍浙江,IT人士。2008年起从事大数据相关的基础构架的研究和开发,素爱读书,博闻强识,对计算机行业和前沿技术的发展有深刻和独到的见解。
本文转自d1net(转载)