Адаптивное извлечение больших аналитических баз данных (MYSQL)

StackOverflow https://stackoverflow.com/questions/1840262

Вопрос

Я хочу создать веб-приложение типа «Google Analytics», т.е.веб-инструмент для создания отчетов и графиков для моей базы данных.Проблема в том, что база данных ОГРОМНА, поэтому я не могу выполнять запросы в режиме реального времени, потому что они будут занимать слишком много времени, и инструмент не будет отвечать.

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

Спасибо!

Это было полезно?

Решение

Бизнес-аналитика (BI) — довольно зрелая дисциплина, и вы найдете ответы на свои вопросы в любой книге по масштабированию баз данных для создания отчетов и хранилищ данных.

Список тактик высокого уровня будет включать в себя:

  • секционирование (поскольку индексы мало помогают для большинства отчетов)
  • сводные таблицы (обычно генерируемые посредством пакетного процесса, отправляемого через cron)
  • вам нужен хороший оптимизатор (в некоторых базах данных, таких как mysql, его нет, поэтому принимайте неверные решения о присоединении)
  • параллелизм запросов (некоторые базы данных обеспечивают линейное ускорение просто за счет разделения запроса на несколько потоков)
  • звездообразная схема — хорошая модель данных ключевой к хорошей производительности

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

Другие советы

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

Альтернативно, возможно, стоит посмотреть что-то вроде http://mondrian.pentaho.org.

Я бы ознакомился со "звездными схемами"

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top