Лучший способ обработки статистики в базе данных?

mysql #charts #statistics

#mysql #Диаграммы #Статистика

Вопрос:

Я работаю над существующим проектом (Angular / Symfony), и мне нужно создать объемную часть, в которой я буду отображать различную графику на основе нескольких критериев и иметь больше фильтров на одной странице.

Моя база данных содержит данные примерно за 10 лет и обновляется ежедневно.

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

Должны ли мы использовать систему архивирования, основанную на фиксированных датах, например, каждую неделю / месяц .. ?

Я видел, что некоторые основаны на временных таблицах, а другие — на разделении базы данных.

Каков наилучший способ справиться с этим?

Комментарии:

1. Лучший способ с точки зрения чего? Вам нужно определить четкие критерии, по которым вы и мы можем оценивать любые решения! Кроме того, вы можете рассмотреть возможность использования какого-либо решения BI, а не пытаться создавать свое собственное с нуля.

Ответ №1:

  • Если вы будете очищать «старые» данные, просто PARTITIONing . В противном случае разделение вряд ли повысит производительность. http://mysql.rjweb.org/doc.php/partitionmaint
  • Для более быстрого доступа к сводным данным (например, к графику «прошлогодних» данных) создайте и поддерживайте сводные таблицы. http://mysql.rjweb.org/doc.php/summarytables Как правило, в такой таблице должна быть одна строка в день. Возможно, вам нужна более подробная информация за последний месяц или что-то в этом роде; мы можем обсудить детали.
  • Архив? Какова цель? Мы можем обсудить плюсы и минусы вариантов здесь.