Адаптивное извлечение больших аналитических баз данных (MYSQL)
-
12-09-2019 - |
Вопрос
Я хочу создать веб-приложение типа «Google Analytics», т.е.веб-инструмент для создания отчетов и графиков для моей базы данных.Проблема в том, что база данных ОГРОМНА, поэтому я не могу выполнять запросы в режиме реального времени, потому что они будут занимать слишком много времени, и инструмент не будет отвечать.
Как я могу использовать задание cron, чтобы помочь мне?Как лучше всего сделать мои графики отзывчивыми?Я думаю, мне придется деномализовать некоторые таблицы базы данных, но как мне ускорить выполнение этих запросов?Какие промежуточные значения я могу сохранить в другой таблице базы данных, чтобы сделать это быстрее?
Спасибо!
Решение
Бизнес-аналитика (BI) — довольно зрелая дисциплина, и вы найдете ответы на свои вопросы в любой книге по масштабированию баз данных для создания отчетов и хранилищ данных.
Список тактик высокого уровня будет включать в себя:
- секционирование (поскольку индексы мало помогают для большинства отчетов)
- сводные таблицы (обычно генерируемые посредством пакетного процесса, отправляемого через cron)
- вам нужен хороший оптимизатор (в некоторых базах данных, таких как mysql, его нет, поэтому принимайте неверные решения о присоединении)
- параллелизм запросов (некоторые базы данных обеспечивают линейное ускорение просто за счет разделения запроса на несколько потоков)
- звездообразная схема — хорошая модель данных ключевой к хорошей производительности
В целом динамическая отчетность превосходит статическую отчетность, поэтому, если вам нужны мощные отчеты, я бы просто попытался скопировать данные в соответствующую модель, использовать агрегаты, возможно, изменить базу данных, чтобы получить хороший оптимизатор и соответствующие функции, а не запускать отчеты в пакетном режиме.
Другие советы
Простой способ решить эту задачу — создать набор сводных таблиц, содержащих предварительно агрегированные данные.Их можно регулярно заполнять с помощью crontab.
Альтернативно, возможно, стоит посмотреть что-то вроде http://mondrian.pentaho.org.
Я бы ознакомился со "звездными схемами"