121|Snowflake:云端的弹性数据仓库
文章目录
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 还是获得了很多的关注。但是我想这个公司的未来,如果能够被某个云厂商收购了,可能会是最好的出路。
文章作者 anonymous
上次更新 2024-02-08