Использование денормализованной таблицы базы данных для аналитических данных - PullRequest
2 голосов
/ 23 января 2012

В созданной мной онлайн-системе продажи билетов мне нужно добавить аналитическую отчетность по заказам в реальном времени для моего клиента.

Важные данные заказа разбиты на несколько таблиц (клиенты, заказы, line_items, package_types, tickets). Каждая таблица содержит дополнительные данные, которые не важны для любого отчета, который может понадобиться моему клиенту.

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

Как правило, запросы, которые я выполняю для отчета, должны объединяться только в двух или трех таблицах одновременно. К каждой таблице добавлены соответствующие индексы.

Имеет ли смысл скомпилировать все данные заказа в одну таблицу, которая содержит только необходимые столбцы для отчетности?

Приложение построено на Ruby on Rails 3, а база данных - Postgresql.

РЕДАКТИРОВАТЬ: Целью этого было бы сделать данные в браузере как можно быстрее для пользователя.

1 Ответ

2 голосов
/ 23 января 2012

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

Может быть, в этом случае лучшим решением будет представление вместо новой таблицы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...