Счетчик: подсчет уникальных за период

Vinny

Guest
Счетчик: подсчет уникальных за период

Вопрос к тем кто делал когда-либо счетчики... Необходимо получать статистику за любой промежуток времени (хитов, уникальных хостов)... Сейчас создаются репорты по дням, но получить статистику за 3 дня простым суммированием по уникальным хостам, понятное дело, не получится... Можно конечно хранить статистику по всем заходам, но тогда база моментально разрастется до неимоверных размеров...

Может кто знает красивое решение проблемы?
 

Demiurg

Guest
>но получить статистику за 3 дня простым суммированием по уникальным хостам, понятное дело, не получится
почему ?
 

desperado

Новичок
Автор оригинала: Demiurg
>но получить статистику за 3 дня простым суммированием по уникальным хостам, понятное дело, не получится
почему ?
он имел ввиду, что в понедельник зашло 3 человека... во вторник 5, но три из них, что и в понедельник... в среду 7, но два из них, что в понедельник и два что во вторник... 3+5+7!=8... а ведь именно 8 - это те, что были уникальные за период с пн по ср. - сумбурно, но думаю логика ясна.
 

Altex

Новичок
Vinny
Нужно чтобы было обе базы. Как бы не разраслась база пользователей (уникальных), выборки из неё будут происходиьт вполне нормально если сделать правильные индексы.

Demiurg
потомучто возможно у человека хрянятьсся уникальные пользователи в отдельной таблице только сутки
 

Vinny

Guest
Потому что в таблице записано сколько уникальных хостов было в день... Если мы проссумируем, то получим сколько старых и новых пользователей было за n-дней... Т.е. это будут не уникальные пользователи... В качестве примера:

1: 1, 2, 3
2: 2, 3, 4
3: 1, 2, 4

В каждый день у нас по 3 пользователя, значит SUM() за 3 дня выдает 9... Но реально у нас было 4 уникальных пользователя, а не 9...
 

Demiurg

Guest
а, понял.
а как вообще собирается статистика и как она в базе храниться ?
 

Vinny

Guest
Alex
Нет, хранить все заходы нереально, слишком большая будет... Пусть у нас будет лимон уников в день (вполне реально), значит только за месяц у нас будет 30 лимонов записей... А за 2, 3, год?
 

Vinny

Guest
Demiurg
Грубо говоря, сейчас есть сайты, репорта по дням и по часам... Есть таблица Site_Host(Site_Id, Host_Id, Time) в которой хранится время последнего захода с хоста на сайт... На основе этой таблицы определяется новый человек на сайте или нет, были ли он сегодня (или в данный час)...

Но это все фигня, структуру переделать не проблема... Нужны идеи... Может кто знает как устроены hotlog.ru, spylog.ru, top.mail.ru, top100.rambler.ru? Хотя бы структуру базы...
 

Falc

Новичок
Altex
не понял что ты имел ввиду под "Нужно чтобы было обе базы"

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

Demiurg

Guest
> Есть таблица Site_Host(Site_Id, Host_Id, Time)
ну с такой структорой все просто
select count(distinct host_id) from table where sites_id = ... and time between .. and ...
на spylog на сколько я знаю база стоит на десятке машин, может они хранят все :)
 

Falc

Новичок
Vinny
>>Пусть у нас будет лимон уников в день

В рунете таких сайтов нету.
 

Vinny

Guest
Falc
Если хранить все, тогда придется хранить инфу о том, был-ли данный хост на данном сайте в данный день... Записей получится за день столько, сколько хостов посетило сайты... А это очень много... Боюсь что муська такого не выдержит...
 

Falc

Новичок
Vinny
Если информация нужна то хранить ее придется.

Хотлоги и проичие счетчики хранят только сводные данные.
 

Vinny

Guest
Demiurg
В таблице запись Site_Id, Host_Id уникальна... Т.е. там не хранятся все заходы с хостов на данный сайт... Только одна запись с датой последнего посещения...

Falc
Для одного сайта нет... Речь идет о множестве сайтов, на которых стоят счетчики...
 

Линк

Guest
а почему не выбрать минимальный период (например день) и не хранить данные по дням

тиаблица
DATE | SITE_ID| HITS | HOSTS
 

Vinny

Guest
Falc
top100 и хотлог (как минимум) показывают сколько было уников за неделю... Хотлог еще позволяет делать выборку за любой период... Т.е. простым созданием таблицы типа Report_By_Week не обойтись...
 

Demiurg

Guest
Vinny
что то я не понимаю, а как генериться статистика на день ?
 

Falc

Новичок
Линк
Тогда уников за заданный период не посчитаешь. Уже объясняли смотри выше
 

Vinny

Guest
Линк
Смотри выше... Из такой таблицы ты не получишь количества уников за 3 дня, например...
 

Линк

Guest
так групирнуть результаты и все)


А хранить их сессии (для хитов) или IP (для хостов) и по ни групить
 
Сверху