Я строю аналитическую систему для мобильного приложения, и мне было трудно решить, как хранить и обрабатывать большие объемы данных.
Каждая строка будет представлять «представление» (например, веб-страницу) и хранить некоторые фиксированные атрибуты, такие как пользовательский агент и дата.Кроме того, каждое представление может иметь различное количество дополнительных атрибутов, которые относятся к выполненным действиям или идентификаторам контента.
Я рассмотрел Amazon SimpleDb, который хорошо обрабатывает различное количество атрибутов, но не поддерживает GROUPBY и, кажется, не очень хорошо работают при подсчете строк.Генерация месячного графика с 30 точками данных потребует запроса для каждого дня для каждого набора данных.
MySQL намного лучше обрабатывает модификаторы COUNT и GROUP, но дополнительные атрибуты требуют хранения в таблице ссылок и JOIN для получения представлений, где атрибутысопоставить заданное значение, которое не очень быстро.Функция секционирования 5.1 может помочь немного ускорить процесс.
Из многочисленных запросов на чтение и профилирование в вышеупомянутых системах я понял, что в конечном итоге все данные должны быть агрегированы и сохранены в таблицах для быстрой генерации отчетов.
Я что-то упустил в своих исследованиях и есть ли лучший способ сделать это, чем использовать MySQL?Это не похоже на правильную задачу для работы, но я не могу найти ничего способного как к запросам GROUP / COUNT, так и к гибкой структуре таблиц.