云数据仓库(Snowflake)

在这里插入图片描述

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,而且这一趋势似乎还没有结束。

一、Snowflake特点

多租户、事务型、安全且高度可扩展:采用多集群(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)和数据库对象的高效克隆。系统维护相应数据分布信息用于确定给定查询可能不需要的数据块,以实现剪枝方法。同时该层的每个服务都被复制以实现高可用性和扩展性。

  • 易用性好:提供全面的 SQL 支持、标准的接口支持和友好的用户界面,具有纯粹的 SaaS 体验。用户无需进行调优、整理存储或物理设计,可根据需要获得弹性计算支持,能从本地和云上导入数据,并监视管理相关信息。
  • 持续可用性高:在体系结构的所有层级上都能容忍节点故障。数据存储层跨多个数据中心进行复制,云服务层的元数据存储也是如此。在一个节点发生故障时,其他节点可以在不影响最终用户的情况下接管任务。虚拟仓库层为追求高吞吐量,不分布在多个数据中心,查询失败时会选择替换结点等方式重新执行。在软件升级时,将新版本的服务和以前的版本一起部署,逐渐切换到新版本。此外,还提供了时间旅行机制允许在一定时间范围内对历史数据进行访问,支持数据克隆来进行灾难恢复和故障转移,使用故障安全机制确保发生系统故障或其他灾难性事件时保护历史数据。
  • 支持半结构化和非结构化数据。

二、优势

  1. 高度可扩展性:采用多集群和共享数据的架构,实现了存储与计算的分离。可以根据需求随时启动或关闭更多计算节点,轻松扩展计算资源,也能在无关计算资源的情况下自动扩容存储。
  2. 操作易用性:提供了全面的 SQL 支持、标准的接口支持和友好的用户界面,具有纯粹的 SaaS 体验。用户无需进行调优、整理存储或复杂的物理设计,还可根据需要获得弹性计算支持,能从本地和云上导入数据,并监视管理相关信息。
  3. 数据共享和数据市场:普及了数据共享、协作和数据市场的概念,提供了一个平台,使专有数据集能够轻松货币化,网络效应正在推动该平台的显著吸引力和采用。
  4. 持续可用性:在体系结构的所有层级上都能容忍节点故障。数据存储层跨多个数据中心进行复制,元数据存储也是如此。虚拟仓库层在查询失败时会选择替换结点等方式重新执行。在软件升级时,可逐渐切换到新版本,不影响最终用户。它还提供了 Time Travel 机制允许在一定时间范围内对历史数据进行访问,支持数据 clone 来进行灾难恢复和故障转移,使用 fail-safe 机制确保发生系统故障或其它灾难性事件时保护历史数据。
  5. 支持半结构化和非结构化数据:能够像处理普通关系数据一样处理无模式、半结构化的数据。
  6. 核心设计优秀:其核心设计原则侧重于操作易用性和可扩展性,响应不断变化的工作负载的动态资源分配能力较强,易用性和可靠性在 Gartner Peer Insights 中经常受到称赞。
  7. 强大的市场占有率和合作伙伴生态系统:是云数据仓库市场中不可或缺的一部分,具有非常高的客户和合作伙伴满意度,市场领先的收入百分比增长以及 Gartner 客户的持续高兴趣。在数据科学、数据集成、BI 和其他领域,系统集成商和合作伙伴的强大市场吸引力巩固了其市场占有率。
  8. 云中立性:可以部署在不同的云平台上,如 Microsoft Azure、Amazon 的 ECS、Google 的 GCP 等,并且数据在这些云提供商之间可无缝迁移,这为用户提供了更多选择和灵活性,避免了被单一云平台锁定的风险。

三、缺点

然而,Snowflake 也并非没有缺点,例如它的成本相对较高,可能不太适合一些预算有限的用户;对于某些特定操作,如扫描少量数据或随机的更新以及含有删除和更新的实时操作,它的表现可能不够理想;其扩展效率在某些情况下存在一定局限性等。但总体而言,Snowflake 在处理大规模数据和复杂分析方面具有显著优势,具体是否适合使用还需根据用户的实际需求和场景来判断。

四、应用场景

  1. 数据仓库和分析:它能够处理大规模的数据,支持复杂的分析查询,帮助企业深入了解业务趋势、客户行为等。
  2. 实时数据分析:虽然 Snowflake 不是专门的实时数据库,但可以用于对实时或近实时数据进行分析,例如在数据仓库中进行实时分析和报表生成。通过手动刷新表流数据等操作,可保持数据一定的实时性。
  3. 数据整合与集中管理:可以将来自多个数据源的数据整合到一个平台上,进行统一管理和分析,无需复杂的 ETL(Extract-Transform-Load)链路构建。
  4. 云原生应用:作为完全建立在云上的企业级数据仓库解决方案,Snowflake 适用于云原生环境,用户只需将数据导入云,就可以立即利用熟悉的工具和界面进行管理和查询。
  5. 跨地域和多云部署:支持在不同区域和/或云提供商的多个帐户之间复制数据库,以确保业务连续性、可移植性,并轻松安全地在区域和云之间共享数据。
  6. 半结构化数据分析:具备自动模式发现及列式存储等功能,能够像处理普通关系数据一样处理无模式、半结构化的数据,且没有额外开销。
  7. 高并发查询:在并发控制方面做到了快照隔离,可应对高并发的查询请求。
  8. 按需付费模式:采用按需计费的方式,企业可以根据实际使用情况灵活扩展或缩减资源,降低成本。
    Snowflake 的核心功能包括 SaaS 服务模式、关系型处理能力(如 SQL 以及 ACID 事务)、半结构化数据处理、弹性、高可用、安全等,其存储和计算分离的架构设计,使得它在处理大规模数据时具有较好的性能、可扩展性和灵活性。然而,具体的适用场景还需根据企业的具体需求、数据规模、性能要求等因素进行综合评估。
  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值