Адаптивное извлечение больших баз данных аналитики (MYSQL) - PullRequest
2 голосов
/ 03 декабря 2009

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

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

Спасибо!

Ответы [ 3 ]

3 голосов
/ 04 декабря 2009

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

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

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

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

1 голос
/ 03 декабря 2009

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

В качестве альтернативы, возможно, стоит взглянуть на что-то вроде http://mondrian.pentaho.org.

0 голосов
/ 03 декабря 2009

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

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