Snowflake是一个初创公司,也是一个完全基于云端构建的弹性数据仓库。它是大数据时代数据分析的一个重要的公司。今天我们来聊聊这个公司。
Snowflake成立于2012年,总部设在加州下属的一个小城市圣马特奥。Snowflake的创始人是本纳特·达格维尔(Benoit Dageville), 蒂里·克鲁安纳(Thierry Cruanes )以及马尔辛·茹科夫斯基(Marcin Zukowski)。这三位都是欧洲人,不过,现在都在美国发展。
本纳特早年在欧洲计算中心做研究,主要工作是并行数据库。后来,他来到了Oracle公司发展,并在Oracle待了16年。前6年是负责领导Oracle的并行执行引擎组,后面10年一直在做Oracle的架构师。
在Oracle里,架构师是一个明确的级别,这个级别非常不容易达到,需要公司里所有架构师全部同意才能晋升。能够在Oracle里面做到这个位置的,自然是非常厉害的人。
蒂里也是欧洲人,他在巴黎攻读完成数据库方向的博士,来到美国之后,先在IBM工作了四年,又在Oracle工作了12年,也是一位资深的数据库专家。
马尔辛和这两位比起来就是年轻一辈了。他在阿莫斯特丹大学获得博士学位,博士期间做的内容是著名的Monet DB/X100。毕业后,他创业成立了Vectorwise,后来公司被卖给了Ingres,他也随之到了Ingres工作,一段时间以后才来到了湾区。
从三个创始人的经历来看,他们都是在数据库方向的专家,有多年的积累与经验。Snowflake便是一个由这样的团队创建的数据库公司。它在成立之后一直都处于保密的状态。直到两年后的2014年10月,公司才正式宣布了他们的产品,同时宣布的还有他们的CEO。
Snowflake的CEO不是三个创始人中的任何一个。他叫鲍博·穆格里亚(Bob Muglia)。这个人在微软的第一份职务是SQL Server的项目经理,之后逐渐升职,直至最后做到了微软的资深副总裁。
2011年,他离开微软。根据后来公布的信息来看,他和当时微软副总裁史蒂夫·鲍尔默(Steve Ballmer)之间就公司的云计算发展产生了冲突。
了解了公司的主创人员和管理人员之后,我们来看看Snowflake的产品。Snowflake的产品主要是一款基于云的数据仓库。2014年发布的时候,所谓的云当然是指亚马逊的AWS。确切地讲就是S3的存储和EC2的虚拟机。
这款数据库是由Snowflake的成员从头开发的。它的主要想法是存储和计算要分离。Snowflake的数据被压缩以后存在亚马逊的S3上,每个文件的大小大约是16MB。文件的格式是列存,每个列被单独存成文件。
当数据需要处理的时候,Snowflake的处理引擎会启动EC2的虚拟机,虚拟机从S3读取数据,然后使用本地的磁盘作为数据的缓存。如果多个数据查询发生,每个数据查询的执行引擎在本地各保留了一份数据。当然查询结果被写回S3的时候,如果两个查询需要更新同一张表,Snowflake有某种写保护方式避免数据写入发生冲突。
Snowflake一出来的时候,它就号称自己的SQL支持SQL1998和SQL2003里面的大部分分析函数。它的数据库产品和SQL的兼容性好,Snowflake的数据模型并非只是基于纯粹的关系数据库,它同时也支持半结构化的数据。
不过,作为一个数据仓库产品,Snowflake本身并不支持索引。当然Snowflake还是会对每个文件记录最大最小值,这些信息可以用来让优化器过滤一部分的数据读取。
Snowflake的收费方式主要有两种,一种是存储的钱,这个按月收费。另外一种块是EC2上跑处理程序的时间,用了多少收多少。
Snowflake有很多不同档次的收费计划,其区别主要是数据库里面保存了多少个以前的版本。比较低级的计划只保存了1天的,而比较高级的计划可以最多保存90天内的所有版本。
从技术角度来讲,Snowflake的实现方式,因为是从头开始搭建的,所以它能够很好契合云计算的架构,也就是存储和计算分离。
Snowflake和亚马逊之间的关系,最初是很友好的合作关系。但是后来亚马逊进军了数据库市场,并推出了Redshift。Redshift作为一个云端的数据库产品,由亚马逊自己提供,并且与自家的S3做了整合。
亲儿子和干儿子之间的区别是很明显的。尤其是当亚马逊今年推出了Redshift Spectrum以后,Redshift就具备了扫描S3文件进行查询的能力了。这个能力让Snowflake使用S3作为廉价存储的梦想受到了打击。
总而言之,现在整个云计算市场上最为明显的竞争对手肯定是Redshift,这一点,Snowflake多少还是感觉到了威胁的。
为了应对这种变化,Snowflake的做法是在西雅图成立了分部。Snowflake在西雅图的分部主要从微软Windows Azure招人,为的是在Windows Azure的存储和虚拟机上实现类似于自己在亚马逊上提供的服务。
大概是2016年下半年,Snowflake从微软的某个云计算部门挖了一个经理,开始组建这个部门。之后陆陆续续的,公司在西雅图的部门逐渐扩展到了10多个人。并在2016年底进军Windows Azure市场。
Snowflake有一些固定的客户,它的商业模式里面,最大的不确定因素是如果云计算厂商自己也想抢Snowflake想做的生意。云厂商对自己的存储和计算服务最熟悉。第三方开发怎么样也不可能比自己开发得到更多的支持。这是Snowflake尴尬的地方。那么,Snowflake要如何打赢这场仗。
当亚马逊做了Redshift之后,Snowflake还是可以去做Windows Azure上面的生意。如果微软也介入这个市场,Snowflake是不是只能去做谷歌的生意呢?如果要是谷歌也介入这个市场,Snowflake怎么办?
从这个角度来讲,云计算的数据库服务如果没有底层基础平台的话,要想在竞争对手的围攻下胜利,是一件不容易的事情。
在云计算上非常成功的应用软件厂商Salesforce,它之所以没有倒下,很大程度上也是因为它的服务是跑在自己的基础架构上,而不是AWS或者微软的服务上的。虽然Salesforce最近也在和AWS合作紧密,主要还是亚马逊目前没有进入企业CRM市场的打算。
而当亚马逊或者微软自己也介入到同样的业务里面来的时候,这种竞争关系就会非常麻烦了。第三方厂商既依赖云厂商提供的基础服务,又和云厂商的服务竞争。这对它们显然是不利的。
不过无论如何,作为第一个云端的弹性数据仓库,Snowflake还是获得了很多的关注。但是我想这个公司的未来,如果能够被某个云厂商收购了,可能会是最好的出路。