Snowflake 云数据仓库

Snowflake Data Warehouse

把海量数据堆在便宜的存储上,算的时候临时开机器,算完就关。

存储与数据出现时间 · 2014 年前后存储按容量月付,计算按仓库运行秒数计费。数据仓库存算分离SQL弹性伸缩
看官方文档

01 它是干嘛的

它是一个用标准 SQL 查询的超大规模分析型数据库。面向的不是一条条交易,而是「上个月各地区的毛利是多少」这类需要扫描上亿行的汇总问题。核心价值在于不用管机器:不建索引、不做分区、不用调优,写 SQL 就行。

02 为什么会有它

以前:为了一年一次的峰值,常年养着一堆机器

传统数据仓库是一体机或自建集群:存储与计算绑在同一批机器上。要存更多数据就得加机器,加机器就同时买了用不上的算力;反过来,查询变慢要加算力,也得连存储一起扩。

更浪费的是峰值配置。财务月结、大促复盘那几天需要十倍算力,其余时间九成资源闲置。但为了避免那几天卡顿,企业只能常年按峰值配置。

云对象存储成熟之后,工程师意识到存储已经便宜到可以按 GB 月付费,那么把「存」固定下来、把「算」做成可随时开关的临时资源,就能只为真正使用的算力付费。这就是存算分离。

03 它怎么工作

数据常驻在共享存储层,查询到来时才拉起虚拟仓库执行,结束即释放;多仓库访问同一份数据互不干扰。

数据仓库的分层:数据只往上流① 定时同步② 清洗③ 聚合④ 出表业务数据库订单 / 用户表日志与埋点用户行为流水第三方数据广告 / 渠道回传原始层 ODS原样搬进来,不改动明细层 DWD清洗、去重、统一口径汇总层 DWS按天/按用户聚合应用层 ADS直接给业务用看板报表给运营和老板看模型训练喂给算法为什么要分层?因为「原始数据不干净、口径不统一」。先如实存下来,再逐层加工成可信的指标。对外服务层加工环节
看底层那份共享存储:所有计算集群读的是同一份数据,这正是「多团队各开各的仓库却看到一致结果」的原因。

一次查询背后发生了什么

  1. 1
    ① 存储层持久化

    数据以列式微分区形式写入共享存储,压缩后长期保存,与计算无关。

  2. 2
    ② 拉起虚拟仓库

    提交查询时启动一组计算节点,规模可选,几秒内就绪。

  3. 3
    ③ 裁剪分区

    根据每个微分区的统计元数据跳过无关数据,只读取真正需要的部分。

  4. 4
    ④ 并行计算

    多个节点并行扫描与聚合,节点越多越快,代价是费用越高。

  5. 5
    ⑤ 用完即停

    空闲一段时间后自动挂起,停止计费;缓存随之失效或按策略保留。

04 谁在用它

企业统一分析平台

把各业务系统的数据汇到一起做统一口径分析。

负载波动明显的报表

月末集中跑批,其余时间几乎不查询。

多团队并发分析

不同团队开不同仓库,互不抢资源。

对外数据共享

向合作方授权查询而不复制数据。

05 怎么用

先小规格跑通一条查询链路,重点学会控制仓库规模与自动挂起时间。

  1. 01创建最小的虚拟仓库,导入一份真实数据。
  2. 02把自动挂起设为几分钟,这是省钱的第一道开关。
  3. 03观察查询的分区裁剪率,判断过滤条件是否命中。
  4. 04再按负载调整仓库规模,宁可小一点多跑一会。

避坑提示

  • !忘了关仓库是最常见的账单事故,务必设置自动挂起与用量告警。
  • !频繁小查询用同一个仓库更划算,不要为每个查询开一个仓库。

06 关键概念

存算分离
存储与计算各自独立伸缩,只为实际使用的算力付费。
虚拟仓库
一组可随时启停的计算节点,规模决定查询速度与费用。
微分区
数据被切成小块并统计每块的范围,查询时靠元数据跳过无关块。
列式存储
按列而非按行存放,聚合类查询只需读取相关列。

07 容易混淆的对比

BigQuery无服务器体验更彻底,按扫描量计费,几乎不用管资源配置。
传统一体机数仓性能稳定可控,但扩容昂贵且无法按秒计费。
自建 Hadoop/Spark自由度高、成本低,但运维与调优负担重。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态