我对柱状DB概念,尤其是BigQuery还很陌生。我注意到,出于性能和成本效益的考虑,建议不仅在逻辑上而且在时间上将数据拆分到表中。
例如,虽然我需要一个表来存储我的日志(称为“日志”的一个逻辑表),但实际上有一个不同时期的单独的表(如"logs_2012“、"logs_2013”等等)被认为是一种良好的实践.甚至"logs_2013_01","logs_2013_02“等等.
我的问题:
1)这实际上是最佳做法吗?
( 2)最好在哪里划定界线-年度表格?每月一张桌子?一张每日餐桌?你明白重点了..。
3)在通过查询检索数据方面,最好的方法是什么?我应该使用UNION选项动态地构造查询吗?如果我将所有日志都放在一个表中--我自然会使用where子句来获取所需时间范围内的数据,但是将数据分布在多个表上会使情况变得很奇怪。我来自关系数据库世界(如果到目前为止还不是很明显的话),我正试图尽可能顺利地实现这个飞跃.
4)使用分布式方法(不同时间段的不同表)仍然会引发以下问题:在查询数据本身之前--我希望能够确定特定的日志类型--查询的可用范围是多少。例如,对于一台特定的机器,我想首先向我的用户介绍他们可用日志的相关范围,并让他们在该范围内选择特定的时间段以获得洞察力。问题是,如果我的数据分布在多个表(每个表都有一段时间)上,而我不知道哪些表是可用的,那么如何构造这样的查询呢?当我不知道存在哪些表时,如何构造查询?当该表实际上不存在时,我可能尝试访问该表"logs_2012_12“,或者最糟糕的事件--我不知道哪些表与我的查询相关,哪些表可用。
希望我的问题有意义..。
阿米特
发布于 2013-12-12 18:14:25
表命名
对于每日表,建议的表名模式是表的特定名称+类似于“20131225”中的日期。例如,"logs20131225“或"logs_20131225”。
理想聚合:天、月、年?
这个问题的答案将取决于您的数据和查询。
工会
你可以自由地做工会。
表发现
发布于 2016-06-27 18:50:51
2016年新答案:分区
现在,您可以将所有内容都放在一个表中,如果您设置了新的分区表,BigQuery将只分析所需日期中包含的数据:
https://cloud.google.com/bigquery/docs/creating-partitioned-tables
https://stackoverflow.com/questions/20544040
复制相似问题