2021年云原生数据仓库发展很快。Snowflake上市后市值一度突破千亿美元,证明了云数据仓库的巨大市场。ClickHouse在国内越来越火,很多互联网公司用它做实时分析。AWS Redshift作为老牌云数据仓库也在不断进化,推出了Redshift Serverless等新功能。
很多团队在做数据仓库选型时不知道该选哪个。这三款产品各有特点,适合不同的场景和需求。选错了可能成本高性能差,迁移起来也很麻烦。
我们团队这几年用过这三款产品,做过几个数据仓库项目,踩过一些坑也积累了一些经验。今天从架构、性能、成本、易用性、生态等多个维度对比这三款主流云原生数据仓库,帮你根据自己的需求做出合适的选择。
先说明一下,以下对比基于2021年底的产品版本,数据仓库产品迭代很快,具体功能和性能可能会有变化,大家选型时以最新官方信息为准。
一、三款产品简介
Snowflake
Snowflake是2012年成立的云原生数据仓库,2020年纽交所上市。它是完全基于云的,从零开始为云设计,支持AWS、Azure、GCP三大云平台。Snowflake的核心特点是存储和计算完全分离,计算资源可以按需扩缩容,数据存储在对象存储上。它还支持数据共享、数据市场等创新功能。
Snowflake定位是全功能的企业级云数据仓库,适合中大型企业做数据平台,支持ETL、BI、数据科学等多种场景。
ClickHouse
ClickHouse是俄罗斯Yandex公司2016年开源的列式数据库,专门为在线分析处理(OLAP)设计。它的特点是查询速度极快,单表查询性能非常强,支持高并发写入。ClickHouse可以自己部署在服务器上,也可以用云厂商的托管服务(比如阿里云ClickHouse、腾讯云CDW)。
ClickHouse定位是高性能实时分析数据库,适合互联网公司做用户行为分析、日志分析、实时看板等场景,对查询性能要求高的场景。
Redshift
Redshift是AWS 2012年推出的云数据仓库,是最早的云数据仓库之一。它基于PostgreSQL,兼容PostgreSQL协议,传统数据仓库用户容易上手。Redshift最近几年也在向云原生演进,推出了RA3节点(存储计算分离)、Redshift Serverless(无服务器)、数据共享等功能。
Redshift定位是AWS生态内的企业级数据仓库,适合已经在用AWS的团队,和AWS其他服务集成好。
二、架构对比
Snowflake的架构
Snowflake是典型的存储计算分离架构。数据存储在对象存储(S3等)上,计算资源是虚拟仓库(Virtual Warehouse),可以独立扩缩容。多个虚拟仓库可以访问同一份数据,互不影响。元数据单独存储在全局服务层。
这种架构的好处是:计算和存储独立扩展,需要多少计算就开多少,不用为了存储买计算。多个工作负载可以用不同的虚拟仓库,ETL用大的,BI查询用小的,互不抢资源。数据不需要复制,多个仓库共享同一份。
Snowflake还支持自动挂起和恢复,虚拟仓库不用时自动挂起不收费,有查询时自动恢复。这对成本控制很友好。
ClickHouse的架构
ClickHouse是单机架构为主,也支持分布式集群。单机版就是一个ClickHouse节点,数据存在本地磁盘上。分布式版用分片加副本,数据分布在多个节点上,查询时分布式聚合。
ClickHouse的存储和计算是耦合的,每个节点既有存储也有计算。扩容需要加节点并迁移数据,相对麻烦。但因为数据在本地,查询性能很好,没有网络拉数据的开销。
ClickHouse也支持了一些云原生特性,比如支持对象存储作为存储后端,但还不够成熟,主流还是本地存储。
Redshift的架构
Redshift早期是存储计算耦合的MPP架构,每个节点既有计算又有存储。后来推出了RA3节点,实现了存储计算分离,数据存在S3上,计算节点缓存热数据。最近又推出了Redshift Serverless,完全无服务器,按查询计费。
Redshift的架构在向Snowflake靠拢,存储计算分离、无服务器、数据共享这些功能都有了,但整体上还是比Snowflake重一些,运维复杂度高一些。
三、性能对比
性能是数据仓库最核心的指标,但不同场景下性能表现差异很大,分开说。
单表大查询性能
ClickHouse最强。ClickHouse为OLAP查询做了大量优化,列式存储、向量化执行、稀疏索引、数据压缩,单表查询速度极快。亿级数据聚合查询往往几百毫秒就能返回。我们测试过,同样的数据同样的查询,ClickHouse比Snowflake快两到五倍,比Redshift快三到十倍。
Snowflake次之。Snowflake的查询性能也不错,列式存储加优化器,大部分查询能在秒级返回。但因为数据在对象存储上,有网络IO开销,极端情况下比ClickHouse慢。
Redshift相对慢一些。Redshift的查询性能中规中矩,复杂查询可能要几十秒。RA3节点因为数据在S3上,冷查询更慢一些,有缓存后会好一些。
多表Join性能
Snowflake最好。Snowflake的优化器很强,对多表Join、子查询、窗口函数等复杂SQL支持好,性能稳定。ClickHouse虽然单表快,但多表Join是弱项,尤其是大表Join大表,性能会明显下降,而且对Join的写法有要求,不支持某些复杂Join。Redshift的Join性能中等,比ClickHouse好一些,但不如Snowflake。
并发性能
Snowflake最好。因为存储计算分离,可以开多个虚拟仓库,不同用户不同工作负载用不同仓库,并发能力强。单个仓库内也支持多并发查询。ClickHouse并发能力一般,高并发下CPU容易打满,查询延迟上升,一般建议并发控制在几十以内。Redshift并发能力中等,并发高了会排队。
写入性能
ClickHouse最好。ClickHouse支持高吞吐批量写入,每秒写入几十万行没问题,适合实时数据写入。Snowflake写入性能也不错,支持COPY批量加载,但小批量频繁写入性能差,建议批量写入。Redshift写入性能中等,COPY加载快,小批量插入慢。
四、成本对比
成本是选型的重要因素,三款产品的计费模式不同。
Snowflake的成本
Snowflake按计算资源和存储分别计费。计算按虚拟仓库的运行时间计费,不同规格的仓库每小时费用不同,最小的X-Small仓库每小时大概2美元左右(AWS美国区),按秒计费,自动挂起不收费。存储按数据量计费,大概23美元/TB/月。
Snowflake的成本弹性大,用得多花得多,用得少花得少。如果查询不多,自动挂起后成本很低。但如果查询量大或者仓库开得大,成本会很高。我们有个项目Snowflake一个月花了一万多美元,主要是ETL用了大仓库跑了很久。
Snowflake还有数据传输费用,跨云跨区域传输数据会收费。
ClickHouse的成本
ClickHouse开源免费,如果自己部署,成本主要是服务器费用。可以用物理机或云主机,自己搭集群。因为性能好,同样的数据量需要的服务器少,成本相对低。我们一个项目用三台16核64G的服务器跑ClickHouse,一个月成本大概三千多人民币,能支撑亿级数据的实时查询。
如果用云厂商的托管ClickHouse,成本会高一些,但省了运维。阿里云ClickHouse按节点规格计费,比自己部署贵但比Snowflake便宜。
ClickHouse的隐性成本是运维,自己部署需要有人维护集群、备份、扩容,人力成本要考虑。
Redshift的成本
Redshift按节点计费,不同节点类型价格不同。RA3节点按计算节点计费,存储在S3上单独收费。Redshift Serverless按RPU(Redshift Processing Unit)小时计费,和Snowflake类似。
Redshift的成本介于Snowflake和ClickHouse之间。如果已经在用AWS,预留实例能便宜不少。Redshift没有Snowflake那么灵活的自动挂起(Serverless版有),传统版节点一直开着就一直收费。
五、易用性对比
Snowflake最易用。 Snowflake是全托管的,不用管基础设施,开个仓库就能用。SQL语法标准,支持大部分标准SQL,文档完善,上手快。自动优化做得好,不用手动调优,大部分查询自动就快了。数据加载也简单,COPY命令或者Snowpipe自动加载。对非专业数据工程师很友好。
Redshift易用性中等。 也是全托管的,基于PostgreSQL,会PostgreSQL的人容易上手。但调优比Snowflake复杂,需要了解分布键、排序键、压缩编码等,设置不好性能差很多。运维也比Snowflake多一些,比如VACUUM、ANALYZE等维护操作。
ClickHouse易用性相对差。 自己部署的话需要运维集群。SQL语法和标准SQL有差异,有些函数和语法不一样,需要学习。建表需要了解各种表引擎(MergeTree系列)、分区键、排序键、主键,设置不好性能差很多。Join语法也比较特殊,需要用GLOBAL JOIN或者IN。对新手不友好,需要有经验的工程师。
六、生态和集成对比
Snowflake生态最丰富。 支持三大云平台,和各种ETL工具(Fivetran、dbt、Airflow)、BI工具(Tableau、Power BI、Looker)、数据科学工具都有很好的集成。还有数据共享、数据市场这些独特功能,能和外部组织安全共享数据。Snowflake的合作伙伴生态很完善。
Redshift和AWS生态集成最好。 如果已经在用AWS,Redshift和S3、Glue、Athena、QuickSight、Lambda等服务集成很方便。Redshift Spectrum能直接查S3上的数据。但Redshift只支持AWS,多云支持不如Snowflake。
ClickHouse生态在快速发展。 ClickHouse开源社区活跃,有很多第三方工具和集成。和Kafka、Flink、Spark等大数据工具集成好。BI工具也基本都支持ClickHouse。但企业级功能和生态完善度不如Snowflake和Redshift。国内阿里云、腾讯云都有托管ClickHouse,国内生态不错。
七、怎么选
说了这么多,到底该怎么选?根据场景给一些建议。
选Snowflake的场景:
第一,中大型企业做统一数据平台,有ETL、BI、数据科学等多种工作负载,需要稳定可靠、功能完善的数据仓库。
第二,团队没有专业的大数据运维人员,想要全托管免运维,开箱即用。
第三,需要多云支持,或者未来可能跨云。
第四,预算充足,愿意为易用性和稳定性付费。
第五,复杂SQL多,多表Join多,需要强优化器。
选ClickHouse的场景:
第一,互联网公司做用户行为分析、日志分析、实时看板,单表大查询多,对查询延迟要求高。
第二,数据量大,预算有限,想要极致性价比。
第三,有专业的大数据工程师,能自己部署和运维。
第四,写入量大,需要高吞吐实时写入。
第五,查询模式相对固定,以单表聚合为主,复杂Join少。
选Redshift的场景:
第一,已经深度使用AWS生态,大部分服务都在AWS上,Redshift集成最方便。
第二,团队熟悉PostgreSQL,想要兼容PostgreSQL的体验。
第三,预算中等,想要比Snowflake便宜一些的全托管数据仓库。
第四,传统企业数据仓库迁移到云,Redshift的MPP架构和传统数仓类似,迁移成本低。
八、我们的经验和建议
最后分享一些我们的实际经验和建议。
第一,不要盲目追新。很多团队看Snowflake火就想上Snowflake,但如果数据量不大、查询不多,用个PostgreSQL加索引就够了,或者用ClickHouse自己部署更划算。数据仓库是重资产,选之前先评估自己的数据量、查询量、团队能力和预算。
第二,先做POC测试。选型前拿真实数据和真实查询做POC,测性能测成本测易用性,不要只看官方benchmark。官方benchmark往往是最有利于自己的场景,和你的实际场景可能差很多。
第三,考虑迁移成本。数据仓库迁移很麻烦,数据要迁移,SQL要改写,ETL要重做,下游BI要重新连接。选型时要考虑长期使用,不要频繁换。如果不确定,可以先用云服务按量付费试一段时间,合适了再长期用。
第四,混合架构也是选择。很多公司不是只用一个数据仓库,而是多个配合。比如用ClickHouse做实时用户行为分析,用Snowflake做企业级数据仓库和BI,各取所长。数据通过ETL同步,虽然复杂但能满足不同场景的需求。
第五,关注团队能力。工具再好,团队不会用也白搭。ClickHouse性能好但需要懂的人调优,Snowflake易用但贵。选型要结合团队的技术能力,选团队能驾驭的工具,而不是理论上最强的工具。
九、写在最后
以上就是三款云原生数据仓库的对比。总结一下:Snowflake功能完善易用性好但贵,适合中大型企业;ClickHouse性能极致性价比高但运维复杂,适合互联网公司做实时分析;Redshift和AWS集成好,适合AWS生态内的团队。
没有最好的数据仓库,只有最适合你的数据仓库。根据自己的业务场景、数据量、查询模式、团队能力和预算,选择最合适的。2021年云原生数据仓库还在快速发展,未来会有更多新功能新产品,保持关注但不要盲目跟风。
数据仓库的核心价值是支撑业务决策,工具只是手段。把数据治理好,把指标定义清楚,把分析做好,比选什么工具更重要。工具选对了能事半功倍,但工具代替不了数据思维和业务理解。
希望这篇对比能帮你在选型时少走弯路。如果你有不同的经验或者疑问,欢迎在评论区交流。祝大家都能选到合适的数据仓库,用数据驱动业务增长。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录