案例库 · 工程与运营 · 技术决策 · 2006–2012
谷歌的Dremel按列存储数据,使千万亿级查询秒级返回
Dremel的列式存储加上多级执行树让万亿行查询变得交互式;它后来成为BigQuery。
谷歌
解法
在2000年代中期,谷歌分析师可以用MapReduce运行大规模计算,但每个作业需要几分钟到几小时——对于交互式探索数据来说太慢了。工程师们希望数据库风格的查询能达到网络搜索的速度,处理PB级数据。
Dremel自2006年起投入生产,结合了两个理念:列式存储(对嵌套记录进行编码,使查询只读取所需字段)和多级服务树(将查询分发到数千个节点并汇总结果)。2010年VLDB论文报告了在3000节点集群上扫描850亿条记录的表,大多数查询在10秒内完成。
谷歌在2010年5月的I/O大会上将该技术作为BigQuery推出,2011年11月增加了图形界面和REST API,2012年5月全面上市——宣称让用户无需购买硬件就能分析TB级数据。
生效的原因
- 列式布局减少读取字节数:查询只触碰所需字段。
- 树状执行在数千台廉价机器上并行化。
- 原生SQL类查询替代了多步MapReduce流水线。
- 原位访问直接从GFS或Bigtable读取数据,无需加载步骤。
取得的成效按列存储数据,秒级回答问题神来之笔
可借鉴之处
围绕你将提出的问题来组织数据,而不是它的写入方式:只读取所需的列并将工作下推至树状结构,把原本需要批次处理的作业转变为适合会议时间的查询。
后续进展
BigQuery成为主流云数据仓库之一,被数千家公司使用,Dremel的列式格式影响了后来的系统,如Apache Parquet。这篇论文是大数据系统领域被引用最多的作品之一。
资料来源
- Dremel: Interactive Analysis of Web-Scale Datasets
- Google opens BigQuery cloud analytics to all
- Big Data Analysis Field Expands with Launch of Google BigQuery
发现哪里写错了?告诉我们。