2012-11-02 26 views
3

我有一个带有“订单”和“订单行”的表格,这些表格以JSON的形式出现,并且它很容易在BigQuery中作为JSON存储。我可以运行一个进程来将文件压扁成行,但这是一个负担,并且使BigQUery表变得更大。在BigQuery上查询记录类型与拼合表的性能

什么是BigQuery的最佳性能结构?假设我对订单或产品有疑问,并在订单行中进行销售。

在记录列中,“记录”(或“订单行”)数量的最佳实践是什么?它可以包含数千个,还是只针对少数?假设我会在MongoDB基于文档的数据库中查询它。

这将帮助我规划正确的架构。

回答

2

BigQuery的列式体系结构旨在以高性能的方式处理嵌套和重复字段,并且通常可以像查看这些记录时一样快地返回查询结果。事实上,在某些情况下(根据数据和正在运行的查询类型),使用已嵌套的记录实际上可以让您避免附加步骤的子查询。

简短的回答:不要担心扁平化,将数据保留在嵌套结构中,查询性能通常都是相同的。

但是,至于第二个问题:您的记录限制将取决于您可以将多少数据存储在一条记录中。目前BigQuery的per record maximum is 20MB。您可以在一条记录中有许多重复的字段,但它们需要符合此限制。