赞
踩
Snowflake 是一种云数据仓库,它在云平台上提供了快速、灵活且易于使用的解决方案,用于存储和分析大规模的结构化和半结构化数据。Snowflake 于 2014 年公开推出,并在 2020 年 9 月正式上市,是迄今为止最大的软件 IPO 上市公司。db-engines 追踪了 snowflake 自 2016 年 7 月以来的流行度分数,其初始流行度分数是 0.35 分,在 2020 年 8 月增加到 2.59 分,2022 年 1 月的得分是 76.82 分,在 2021 年期间增加了 61.29 分。在 db-engines 的整体排名中,snowflake 在 2021 年开始时排名 37,过去 12 个月中已经攀升了 20 位,排名 17,而且这一趋势似乎还没有结束。
多租户、事务型、安全且高度可扩展:采用多集群(multi-cluster)和共享数据(shared-data)的架构,是传统 shared-disk 和 shared-nothing 数据库体系结构的混合体,实现了存储与计算的分离。它由高度容错和独立可扩展的三个服务层组成,不同服务层通过 restful 接口通信,并且三层架构都完全部署在云上,用户可在亚马逊 AWS、谷歌云平台 GCP、微软 Azure 中选择云平台和区域。
- 数据存储层(database storage):数据按照内部优化、加密、压缩的列式存储方式组织,存放在云提供商的存储平台上,数据一致性问题由云提供商服务解决。表结构会自动水平划分为固定大小不可变的微分区(micropartition),当虚拟仓库中节点的本地磁盘空间耗尽时,还可用于存储查询生成的溢出临时数据及查询结果。
- 虚拟仓库层(virtual warehouse):也称作查询处理层,由云提供商提供的 MPP(大规模并行处理)集群计算实例组成。用户可根据需求选择虚拟仓库的大小,每个查询只在一个虚拟仓库上运行,具有良好的计算资源隔离性特点。每个 worker 节点在本地磁盘上缓存部分查询得到的表数据,并采用一致性哈希策略分配表数据,通过文件窃取以及允许其它 worker 节点直接从数据存储层下载当前节点负责范围内的表文件,解决负载倾斜问题。该层进行查询处理时基于列、向量化、基于 push 且没有缓冲池。
- 云服务层(cloud services):运行在云提供商提供的计算实例上,负责访问控制、查询优化、事务管理、管理虚拟仓库等功能,体现了多租户性。查询优化采用自顶向下的基于成本的 cascades-style;通过快照隔离实现 ACID 事务,还使用快照来实现时间旅行(timetravel)和数据库对象的高效克隆。系统维护相应数据分布信息用于确定给定查询可能不需要的数据块,以实现剪枝方法。同时该层的每个服务都被复制以实现高可用性和扩展性。
然而,Snowflake 也并非没有缺点,例如它的成本相对较高,可能不太适合一些预算有限的用户;对于某些特定操作,如扫描少量数据或随机的更新以及含有删除和更新的实时操作,它的表现可能不够理想;其扩展效率在某些情况下存在一定局限性等。但总体而言,Snowflake 在处理大规模数据和复杂分析方面具有显著优势,具体是否适合使用还需根据用户的实际需求和场景来判断。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。