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 Как правило, в такой таблице должна быть одна строка в день. Возможно, вам нужна более подробная информация за последний месяц или что-то в этом роде; мы можем обсудить детали.
- Архив? Какова цель? Мы можем обсудить плюсы и минусы вариантов здесь.