01 它是干嘛的
它是一个用标准 SQL 查询的超大规模分析型数据库。面向的不是一条条交易,而是「上个月各地区的毛利是多少」这类需要扫描上亿行的汇总问题。核心价值在于不用管机器:不建索引、不做分区、不用调优,写 SQL 就行。
02 为什么会有它
以前:为了一年一次的峰值,常年养着一堆机器
传统数据仓库是一体机或自建集群:存储与计算绑在同一批机器上。要存更多数据就得加机器,加机器就同时买了用不上的算力;反过来,查询变慢要加算力,也得连存储一起扩。
更浪费的是峰值配置。财务月结、大促复盘那几天需要十倍算力,其余时间九成资源闲置。但为了避免那几天卡顿,企业只能常年按峰值配置。
云对象存储成熟之后,工程师意识到存储已经便宜到可以按 GB 月付费,那么把「存」固定下来、把「算」做成可随时开关的临时资源,就能只为真正使用的算力付费。这就是存算分离。
03 它怎么工作
数据常驻在共享存储层,查询到来时才拉起虚拟仓库执行,结束即释放;多仓库访问同一份数据互不干扰。
一次查询背后发生了什么
- 1① 存储层持久化
数据以列式微分区形式写入共享存储,压缩后长期保存,与计算无关。
- 2② 拉起虚拟仓库
提交查询时启动一组计算节点,规模可选,几秒内就绪。
- 3③ 裁剪分区
根据每个微分区的统计元数据跳过无关数据,只读取真正需要的部分。
- 4④ 并行计算
多个节点并行扫描与聚合,节点越多越快,代价是费用越高。
- 5⑤ 用完即停
空闲一段时间后自动挂起,停止计费;缓存随之失效或按策略保留。
04 谁在用它
企业统一分析平台
把各业务系统的数据汇到一起做统一口径分析。
负载波动明显的报表
月末集中跑批,其余时间几乎不查询。
多团队并发分析
不同团队开不同仓库,互不抢资源。
对外数据共享
向合作方授权查询而不复制数据。
05 怎么用
先小规格跑通一条查询链路,重点学会控制仓库规模与自动挂起时间。
- 01创建最小的虚拟仓库,导入一份真实数据。
- 02把自动挂起设为几分钟,这是省钱的第一道开关。
- 03观察查询的分区裁剪率,判断过滤条件是否命中。
- 04再按负载调整仓库规模,宁可小一点多跑一会。
避坑提示
- !忘了关仓库是最常见的账单事故,务必设置自动挂起与用量告警。
- !频繁小查询用同一个仓库更划算,不要为每个查询开一个仓库。
06 关键概念
- 存算分离
- 存储与计算各自独立伸缩,只为实际使用的算力付费。
- 虚拟仓库
- 一组可随时启停的计算节点,规模决定查询速度与费用。
- 微分区
- 数据被切成小块并统计每块的范围,查询时靠元数据跳过无关块。
- 列式存储
- 按列而非按行存放,聚合类查询只需读取相关列。
07 容易混淆的对比
BigQuery无服务器体验更彻底,按扫描量计费,几乎不用管资源配置。
传统一体机数仓性能稳定可控,但扩容昂贵且无法按秒计费。
自建 Hadoop/Spark自由度高、成本低,但运维与调优负担重。