我有一个带有 JSON 格式的“订单”和“订单行”的表,将它作为 JSON 存储在BigQuery中很简单。我可以运行一个进程将文件展平为行,但这是一种负担,并且会使 BigQUery 表更大。
BigQuery 的最佳性能结构是什么?假设我对总和或产品以及订单行中的销售有疑问。
记录列中“记录”(或“订单行”)数量的最佳实践是什么?它可以包含数千个还是针对少数几个?假设我会像在基于MongoDB文档的数据库中一样查询它。
这将帮助我规划正确的架构。
BigQuery 的列式架构旨在以高性能方式处理嵌套和重复的字段,并且通常可以像展平这些记录一样快地返回查询结果。事实上,在某些情况下,(取决于您的数据和您正在运行的查询类型)使用已经嵌套的记录实际上可以让您避免附加额外步骤的子查询。
简短的回答:不要担心扁平化,将数据保持在嵌套结构中,查询性能通常是相同的。
但是,关于您的第二个问题:您的记录限制将取决于您可以在单个记录中存储多少数据。目前 BigQuery 的每行最大值为 100MB。一条记录中可以有很多很多重复的字段,但它们需要符合这个限制。