EN
返回档案库

案例库 · 工程与运营 · 技术决策 · 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。这篇论文是大数据系统领域被引用最多的作品之一。

资料来源

发现哪里写错了?告诉我们。

相关案例