You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
6.8 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 096 | 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还是获得了很多的关注。但是我想这个公司的未来如果能够被某个云厂商收购了可能会是最好的出路。