Как собрать данные по дням и при этом соблюдать часовой пояс? - PullRequest
9 голосов
/ 07 августа 2010

В настоящее время мы используем сводную таблицу, которая агрегирует информацию для наших пользователей по часам в UTC. Проблема, которую мы имеем, состоит в том, что эта таблица становится слишком большой и сильно замедляет нашу систему. Мы выполнили все методы настройки, рекомендуемые для PostgreSQL, и все еще испытываем медлительность.

Нашей идеей было начать агрегирование по дням, а не по часам, но проблема в том, что мы позволяем нашим клиентам изменять часовой пояс, который пересчитывает данные за этот день.

Кто-нибудь знает способ хранения ежедневной сводки, но при этом учитывает цифры и итоги при переключении часовых поясов?

Ответы [ 3 ]

4 голосов
/ 07 августа 2010

Суммируйте данные в таблицах со столбцом смещения по времени и полем «день» (дата), который является днем ​​для этой конкретной итоговой строки. Индексируйте (временное смещение, день, другие соответствующие поля), если возможно, кластеризуйте (предположительно, PostgresSQL имеет кластеризованные индексы?), И все должно быть хорошо.

0 голосов
/ 26 апреля 2016

Я тоже встречался с этой проблемой.Я принимаю это решение: данные с типом даты используют локальный часовой пояс, другие данные с типом дата-время используют часовой пояс UTC, потому что индекс статистики является локальным.Другая причина в том, что теперь у нас есть только локальные данные.

0 голосов
/ 08 августа 2010

Я предполагаю, что вы рассмотрели все вопросы, связанные с разделением, такие как разделение пользователем.

Я вижу несколько решений вашей проблемы в зависимости от модели использования.

  1. Агрегирование данных за день по выбору пользователя. В случае изменения часового пояса, программно пересчитать агрегат для этого партнера. Это правдоподобно, если изменения часового пояса происходят нечасто и если при изменении часовых поясов пользователь может вводить некоторую задержку в данных.

  2. Если у вас относительно мало показателей, вы можете сохранить 24 столбца для каждой меры - каждый из которых описывает ежедневный агрегат для показателя в другом часовом поясе.

  3. Если частые изменения часового пояса и существует множество показателей, кажется, что 24 различных сводных таблиц были бы подходящими.

...