最近随着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没有。
累计执行时长(22条SQL):还是Redshift表现最好,Synapse也不错。相对于单用户环境下,Snowflake和BigQuery似乎表现更差了,只有Redshift的1/6左右,说明它们在资源的并发控制这块还不太好,特别是Snowflake。
最佳性能SQL的数量:同样,还是Redshift在最多场景性能表现最好,Synapse是第二,但差距已经不大了。而Snowflake和BigQuery在22个场景中没有执行时长最短的。
性价比的计算采用下面公式,执行时长是累计时长,而价格取自各厂商的官网列表价。
单用户性价比:Redshift最便宜,其次是Synapse,然后是Snowflake和BigQuery,其中BigQuery要比其它3家高不少。
并发用户性价比:Synapse最便宜,其次是Redshift,然后是Snowflake和BigQuery。
分布式实验室 微信号 #dockerone