Есть таблица статистики просмотра объектов-объявлений на сайте, в которой примерно 47 миллионов записей с 2012 года. Структура таблицы advstat идентификатор (autoincrement)(idstat), advid (int, идентификатор объявления), statdate (0000-00-00), stattime (00:00:00), statip (46.229.168.149, varchar(40)) advsourсe (varchar(40) текстовое поле, может быть пустым). 1. Требуется один или несколько скриптов, которые будут выполнять агрегирование результатов по месяцам, по годам. За последние 30 дней данные также хранятся в развернутом виде. 2. В таблице objects (с объектами, по которым ведется статистика) будут созданы 2 поля views и visits (количество просмотров и количество посетителей) - 1 посетитель может просмотреть объект несколько раз. Они должны обновляться 1 раз в сутки после 00 часов. 3. Также нужны данные, на основании которых будет работать модуль «посетители, смотревшие данный объект также интересовались…» - в котором анализ ведется на основе ip адресов. На основе этого анализа на странице объекта будут выводиться подобные объекты. До 30 дней пользователь видит развернутые данные. От 31 дня пользователь видит данные за месяц. От 365 дня пользователь видит данные за год. В настоящее время никакая агрегация не ведется. При просмотре за любую дату пользователь получает количество просмотров и посетителей в виде почасового графика. Скрипты будут выполняться по cron. Стоимость, сроки. Комментарии и подсказки по реализации также приветствуются.
@Виталий1, хранить ip в varchar то больно, как собственно и statdate (0000-00-00), stattime (00:00:00) вместо единственного timestamp. По хорошему, нужен срез БД хотя бы за 2-3 месяца, а лучше например за весь 2012 год.
По типам данных - текущую таблицу можно сконвертировать и перевести в нужный формат, чтобы в дальнейшем работать. Срез сегодня сделаю. --- Добавлено --- По срокам не критично. Это плановая задача. Думаю, что пункты 1 и 2 можно в течение одного дня реализовать. По третьему пункту у меня нет пока четкого понимания. По стоимости мне не с чем сравнивать. Оплата на сбербанк, альфабанк, промсвязьбанк. Без предоплаты.