什么是 Dremel?
BigQuery 并非一款无限工具。事实上,最好不要将 BigQuery 视为一个众所周知的黑匣子。为了加深理解,有必要深入了解一下 BigQuery 引擎的一些内部工作原理。
Google 的 Dremel:分布式计算框架
BigQuery 基于一个名为 Dremel 的分布式计算框架,Google 在 2010 年的白皮书中对此进行了更深入的解释:"Dremel:Web 规模数据集的交互式分析"。
白皮书描述了定义现代 BigQuery 的许多核心特征的愿景,例如即席查询系统、几乎无限的计算能力以及对处理大数据(TB 和 PB 级)的重视。
Dremel 如何工作?
由于 Dremel 最初是内部产品(自 2006 年以来在 Google 内部使用),它结合了搜索和并行数据库管理系统的各个方面。
为了执行查询,Dremel 使用了一种"树状"结构,其中查询的每个阶段都按顺序步骤执行,并且可以并行执行多个查询。 Dremel 将 SQL 查询转换为执行树。
Slots:BigQuery 执行的基础单元
在"查询执行"标题下,作者描述了 BigQuery 执行的基础单元:slot。
- Slot 是一种表示可用处理单元的抽象。
- Slot 是有限的,这就是为什么项目中的任何僵局通常都是由于缺乏可用的 Slot 造成的。
- 由于 Slot 的使用会根据处理的数据量和一天中的时间等多种因素而变化,因此可以想象,当天早些时候快速执行的查询现在可能需要几分钟。
Slot 的抽象可能是 Dremel 论文中表达的最适用的概念;其他信息很有帮助,但主要描述 BigQuery 产品的早期版本。
BigQuery:定价和使用模型
无论您是第一次练习 BigQuery 查询的学生,还是强大的决策者,了解定价对于定义您可以在 BigQuery 中存储、访问和操作的内容的限制都至关重要。
要彻底了解 BigQuery 定价,最好将成本分为两个部分 −
- 使用(BigQuery 的文档将其称为"计算")
- 存储
使用几乎涵盖了您能想到的任何 SQL 活动,从运行简单的 SELECT 查询到部署 ML 模型或编写复杂的用户定义函数。
对于任何与使用相关的活动,BigQuery 提供以下选择 −
- 按需付费或"按需"模式。
- 批量插槽(Slot)或"容量"模式,客户按插槽(Slot)付费小时。
哪种定价模式最适合您?
在两种定价模式之间做出选择时,重要的是要考虑以下因素 −
- 查询的数据量
- 产生的用户流量
"按需"模式按每 TB 定价,这意味着对于拥有许多大型(多个 TB)表的用户来说,这可能是一种直观且方便的跟踪费用的方式。
"容量"或时隙模型对于正在发展其数据基础设施且可能没有固定数据量来帮助他们计算可靠的每月费率的组织或个人很有帮助。问题不再是担心每种资源生成多少数据,而是转向改进最佳实践,将查询时间分配给计划的流程和单独的临时查询。
本质上,插槽(Slot)模型遵循 Dremel 项目建立的框架,其中插槽(Slot)(服务器)被保留并相应定价。