最近随着Snowflake上市后市值的暴增(目前700亿美金左右),整个市场对原生云数仓都关注起来。近日,一家第三方叫GigaOM的公司对主流的几个云数仓进行了性能的对比,包括Actian Avalanche、Amazon Redshift、Microsoft Azure Synapse、Google BigQuery、Snowflake,基本涵盖了目前市场上主流的云数仓服务。
大家知道,传统数仓版本的更新都是以年来计,很多客户的数仓平台都还是使用5年,甚至10年前的技术。而现今,公有云给这个行业带来巨大的变化,云原生的数仓层出不穷,技术迭代更新非常快,比如AWS宣称其Redshfit在过去18个月有200多项更新,每周全网同步更新2-3个功能与特性,让客户一直运行在最新版本,能随时使用到最新的技术。
GIGAOM在去年(2019)4月份发布过一份类似的云原生数仓性能测试报告,当时选取的主要是Amazon Redshift, Microsoft Azure SQL Data Warehouse, Google BigQuery和Snowflake,没有Actian。
今年的这份报告发布于2020年10月13日,应该是目前市场上最新的对云数仓的性能对比了。GIGAOM将测试报告发布在其官网:https://gigaom.com/report/high-performance-cloud-data-warehouse-performance-testing/
“大部分历史是猜的,剩下的都是偏见” –威尔·杜兰特(哲学家、历史学家)
这句话同样适用于各种Performance Benchmark对比,任何POC(Proof of Concept,搞技术的人都懂的)都是带有偏见的,主要看谁是Sponsor。GigaOM不是慈善机构,测试肯定需要费用,开这么多云数仓服务,每个跑一遍测试场景,费用应该不低,所以必须有金主支持。公司在这点上还比较公开透明,首先声明本次测试的Sponsor是Actian,所以我们可以认为Actian应该是深度参与了测试,大概率是进行了场景的选择和调优等相关工作。GigaOM帮助选择了测试的对手,也就是AWS、Azure、GCP和Snowflake。(备注:2019年4月测试的Sponsor是Microsoft) 下面我就这份测试报告来窥视分析一下各个云数仓的技术特点,个人观点,仅供参考。
平台简介
Actian Avalanche:2019年才刚刚开始向市场提供云数仓的服务,基于Vector(2010年发布的一款本地部署的MPP数据库),主要应用在数据分析、数仓平台。
技术上也是列压缩存储,缓存执行模型,向量技术处理数据,SQL标准遵循ANSI-2011 SQL,全托管云服务,用户可选择部署在AWS、Azure和GCP上,当然它也支持本地部署。
Amazon Redshift:是市场上第一个原生云数仓服务,MPP、列存、按列压缩、无索引、动态扩展,SQL语法兼容PostgreSQL,支持存储与计算分离,按小时计费,也可以通过暂停来停止计费。
Azure Synapse Analytics:之前叫SQL DW,今年改名为Synapse。存储计算分离,列存、按小时计费、可通过暂停与恢复来节省成本,SQL兼容SQL Server(可能底层就是SQL Server)。
Google BigQuery:源于Google的Dremel技术,无索引、Serverless技术、动态调整计算与存储资源,存储按非压缩数据量来计费,计算按照查询使用的slot来计费。
Snowflake:全托管云数仓服务,可运行在AWS、Azure、GCP之上(用户在创建服务的时进行选择),计算存储分离架构,计算按需成倍扩展(1、2、4、8、16……)和计费,存储按需计费。 下表格是本次测试的各数仓版本,应该都是基于2020年9月左右的最新版本了。
测试场景与数据规模
本次测试场景选取的是30TB的TPC-H,比较有趣的是在2019年的benchmark中GigaOM选取的是30TB的TPC-DS。要知道,TPC-DS有99个SQL,而TPC-H只有22个,而且TPC-DS的模型要比TPC-H复杂,那为啥本次不选择更加通用的TPC-DS呢?
对比两次测试的云数仓产品,Actian是今年新加入的(其它都是老面孔),而且它是Sponsor,大概率Actian对TPC-H支撑得更好(或者说,Actian可能不能完全支持TPC-DS),以上只是个人的猜测。
毕竟,就如上面提到的,任何POC都是带有“偏见”的。下面看看具体的测试数据:
Table记录数与data model:
TPC-H的22个SQL类型:
测试环境
下表是各数仓的测试环境,基本都是各云厂商提供的最新配置,按照相似计算能力进行的选择。
测试结果
Actian基本在所有的场景性能都表现最优,而且性价比最好,具体可详见GigaOM的报告。但就如前面所说的,它是Sponsor,并且参与了测试过程和报告的编写,这种结果也可以预期的。
但这并不是本文要分析的重点,其实,其它4家的产品,Snowflake / Redshift / Synapse / BigQuery,才是市场上最常见和使用最广泛的云数仓产品。所以我决定将Actian从测试结果中去掉,比较一下这4家的性能数据。结果如下:
场景一:单用户执行
累计执行时长(22条SQL):可以看到Redshift和Synapse要远好于Snowflake和BigQuery,其中Redshfit的总体执行时长最短,大概只有Snowflake的1/2和BigQuery的1/5。
最佳性能SQL的数量:横向比较22个场景,挑选出每个场景的最佳(执行时长最短)。Redshift有13条SQL执行时间最短,Synapse有8条,Snowflake只有1条,而BigQuery没有。
场景二:5并发用户执行
累计执行时长(22条SQL):还是Redshift表现最好,Synapse也不错。相对于单用户环境下,Snowflake和BigQuery似乎表现更差了,只有Redshift的1/6左右,说明它们在资源的并发控制这块还不太好,特别是Snowflake。
最佳性能SQL的数量:同样,还是Redshift在最多场景性能表现最好,Synapse是第二,但差距已经不大了。而Snowflake和BigQuery在22个场景中没有执行时长最短的。
场景三:性价比
性价比的计算采用下面公式,执行时长是累计时长,而价格取自各厂商的官网列表价。
Elapsed time of test (seconds) x Cost of platform ($/hour)3,600 (seconds/hour)
单用户性价比:Redshift最便宜,其次是Synapse,然后是Snowflake和BigQuery,其中BigQuery要比其它3家高不少。
并发用户性价比:Synapse最便宜,其次是Redshift,然后是Snowflake和BigQuery。
测试结论汇总与局限性
- 在性能方面,无论是单进程还是并发方式,Redshift都是表现最好的,Synapse其次。
- 在并发性能方面,Snowflake和BigQuery似乎没有Redshift和Synapse控制得好。
- 性价比方面,Redshift和Synapse差不多,BigQuery最贵。
- 本次测试主要只是性能对比,不涉及功能、安全性、扩展性、高可用、备份、生态等等其它方面,有一定局限性。
- Snowflake和BigQuery在市场上的宣传一直都是强调其易用性和易管理性(无需DBA),这方面在本次测试中没有涉及。
- 本次测试采用的TPC-H模型可能是为了迁就Actian而选择,相对简单,无法完全反映真实环境中的各种复杂负载和ad-hoc查询,另外5并发也相对较低。
云数仓的未来展望(个人观点,仅供参考)
当今各云数仓版本迭代都很快,功能上Snowflake、Redshift、Synapse、BigQuery都已经很接近,而且大家都在互相学习,比如存储计算分离、按需弹性扩展、数据共享与交换、对象存储集成等等, 90%的功能大家都雷同,只是在技术细节的实现上各有不同。
Snowflake与其它3家不大相同,它为独立的第三方,有跨云部署的优势。但它底层还需要依赖第三方云厂商的基础架构,比如AWS、GCP、Azure,随着这些厂商自身云数仓服务的发展,这种合作关系可能未来可能会变得越来越微妙。
易用性和易管理性是未来各云数仓的发展重点,Snowflake开了个好头,其它各厂商都紧密跟进,今后可能真的没有DBA这个职业了。
未来云数仓或云数据库,更多的优化可能会与底层专有硬件或网络相结合,比如CPU、GPU、FPGA、专有协议等等,这些是云厂商自研产品的优势,而像Snowflake、Actian、ClickHouse等第三方平台是无法做到的。所以,易用性、通用性和性能本身就是一对矛盾的共同体,客户可以按照自己的实际需求来权衡、选择。