如何按天聚合数据并仍然尊重时区?

时间:2010-08-06 22:30:07

标签: sql database database-design data-warehouse

我们目前正在使用汇总表,该汇总表在UTC时间内按小时汇总用户的信息。我们遇到的问题是这张桌子变得太大而且我们的系统放大了很多。我们已经完成了为PostgreSQL推荐的所有调优技术,但我们仍然遇到了缓慢的问题。

我们的想法是按天而不是按小时开始汇总,但问题是我们允许客户更改时区,重新计算当天的数据。

是否有人知道存储每日摘要的方法,但在切换时区时仍然尊重数字和总数?

4 个答案:

答案 0 :(得分:4)

汇总带有timeoffset列的表中的数据,以及作为该特定汇总行的日期的“day”字段(日期)。索引(timeoffset,day,其他相关字段),如果可能的话聚集(可能是PostgresSQL有聚簇索引?),一切都应该很好。

答案 1 :(得分:0)

我假设您已经完成了所有分区注意事项,例如按用户分区。

根据使用模式,我可以看到您问题的几种解决方案。

  1. 每位用户选择的每日汇总数据。如果时区发生变化,请以编程方式重新计算此合作伙伴的聚合。如果时区变化很少,并且当用户更改时区时可能会引入某些数据延迟,则这是合理的。

  2. 如果措施相对较少,则每个度量可以保留24列 - 每个列描述不同时区内度量的每日汇总。

  3. 如果时区变化频繁且有很多措施,那么似乎有24种不同的聚合表可供选择。

答案 2 :(得分:0)

我也遇到了这个问题。我采用这个解决方案:日期类型的数据使用本地时区,其他数据使用日期时间类型使用UTC时区,因为统计索引是本地的。另一个原因是现在我们只有本地数据。

答案 3 :(得分:0)

我面临同样的问题。我正在考虑按日期和时间(UTC 中的每小时)进行聚合。然后,您可以相应地获取所需时区的数据。不幸的是,如果您需要支持有 45/30/15 分钟偏移的时区,这将不起作用。 然后您可以将数据聚合 15 分钟。解决方案取决于要聚合的数据量。