Big Query如何存储具有分类(重复)字符串值的一列数百万行?

时间:2018-07-17 16:56:30

标签: optimization google-bigquery query-optimization storage

我们每天将大约一百万条记录流式传输到BQ中,并且特定的字符串列的分类值为“高”,“中”和“低”。

我试图了解Biq Query是否在自身末端进行了压缩以外的存储优化,其规模是多少?寻找有关此内容的文档,但找不到相同的解释。

例如,如果我有:

**Col1**
High
High
Medium
Low
High
Low
**... 100 Million Rows**

BQ会在内部按以下方式存储

**Col1**
1
1
2
3
1
3
**... 100 Million Rows**

3 个答案:

答案 0 :(得分:2)

值得注意(正确!)的摘要:

  • 正如Elliott在评论中指出的那样,您可以阅读有关BigQuery数据压缩{​​{3}}的详细信息。

  • 正如Felipe所述,作为BigQuery的用户,无需考虑这些细节。所有这些优化都是在后台进行的,并且随着BigQuery的发展而不断改进,而无需您采取任何行动。

  • 正如米哈伊尔(Mikhail)在评论中指出的那样,无论存储层上进行了任何优化,您都将根据逻辑数据大小来计费。

答案 1 :(得分:1)

BigQuery不断改善基础存储-所有这些操作都无需用户干预。

要了解BigQuery的列式存储背后的原始思想,请阅读Dremel论文:

要查看存储方面最新发布的改进,请参阅电容器:

答案 2 :(得分:1)

BigQuery依赖于Google最新一代的分布式文件系统Colossus。每个Google数据中心都有其自己的Colossus群集,并且每个Colossus群集都具有足够的磁盘,可以为每个BigQuery用户一次提供数千个专用磁盘。 您可以从“引擎盖下的BigQuery” page中收集更多详细信息。