Я нахожусь в стеке LAMP для веб-сайта, которым я управляю. Необходимо свернуть статистику использования (различные вещи, связанные с нашим настольным продуктом).
Сначала я решил проблему с PHP (поскольку у меня уже было несколько классов для работы с данными). Все хорошо работало на моем устройстве dev, которое использовало 5.3.
Короче говоря, управление памятью 5.1 кажется намного хуже, и мне пришлось много дурачиться, чтобы заставить долгосрочные сценарии свертывания работать в фиксированном пространстве памяти. Наши серверные ребята в настоящее время не хотят обновлять PHP. С тех пор я перенес свой dev-сервер обратно на 5.1, чтобы больше не сталкиваться с этой проблемой.
Для майнинга баз данных MySQL, чтобы свести статистику за разные периоды и разрешения, потенциально запустив процесс, который делает это постоянно (в отличие от расписания cron), какой язык вы порекомендуете? Я смотрел на Python (я знаю это более или менее), Java (плохо знаю) или высовывал его с помощью PHP (знаю это очень хорошо).
Редактировать: уточнение проекта для комментатора
Резолюции. В настоящее время работает сводный скрипт. У меня есть несколько классов для определения разрешений и сегментов. У меня есть год, месяц, неделя, день - учитывая «номер корзины», каждый класс дает начальную и конечную метки времени, которые определяют диапазон времени для этого сегмента - это основано на произвольной дате эпохи. Система поддерживает «полные» записи, т.е. она будет завершать свернутый набор данных для каждого разрешения с момента последнего запуска, в настоящее время.
SQL Strat: Базовая статистика находится во многих разнородных схемах и таблицах. Я делаю отдельные запросы для каждой свернутой статистики по большей части, затем заполняю одну запись для вставки. Вы предлагаете вложенные подзапросы, такие как:
ВСТАВИТЬ в roll_up_stats (someval, someval, someval, ...) ЗНАЧЕНИЯ (ВЫБРАТЬ СУММУ (somestat) из someschema, ВЫБРАТЬ AVG (somestat2) из someschema2)
Эти подзапросы будут генерировать временные таблицы, верно? Мой опыт показывает, что раньше он был медленным, как патока. Это лучший подход?
Редактировать 2: Добавление некоторых встроенных ответов на вопрос
Язык был узким местом в случае 5.1 php - мне сказали, что я сделал неправильный выбор языка (хотя скрипты работали нормально на 5.3). Вы упоминаете Python, который я проверяю для этой задачи. Чтобы было ясно, я делаю инструмент управления статистикой использования настольного продукта (журналы фактически записываются сервером EJB в таблицы mysql). Я занимаюсь анализом файлов журнала Apache, а также создаю больше пользовательских веб-отчетов на веб-стороне, но этот проект является отдельным. Подход, который я использовал до сих пор, - это агрегированные таблицы. Я не уверен, что эти продукты очереди сообщений могли бы сделать для меня, я посмотрю.
Пройдем немного дальше - эти данные используются для составления графика активности на уровне службы и клиента, чтобы руководство могло понять, как используется продукт. Вы можете выбрать период времени (с 1 по 10 апреля) и получить график общего количества минут использования определенной функции с различной степенью детализации (часы, дни, месяцы и т. Д.) В зависимости от выбранного периода времени. Это, по сути, анализ использования после факта. Однако, похоже, что потребность стремиться к реальному времени (посмотрите на последний час использования)