powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблицы для статистики
5 сообщений из 5, страница 1 из 1
Таблицы для статистики
    #33575323
flyinghero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо создать для сайта систему статистики, в которой для любого периода и любого раздела можно узнать

а) кол-во кликов
б) со скольки уникальных хостов эти клики были совершены
в) общее число уникальных хостов для всего периода

Посоветуйте, как это все хранить в базе. Не а одну же все таблицу записывать?
...
Рейтинг: 0 / 0
Таблицы для статистики
    #33575434
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите, как решаются OLAP-подобные задачи в вашей БД. Первое, что приходит в голову -

Код: plaintext
1.
2.
3.
4.
5.
create table sitestats (
  day date not null default sysdate, -- дата записи
  host <hosttype> not null, -- хост
  chapter integer not null, -- раздел
  clicks number not null, -- количество кликов с хоста за дату в разделе
  primary key (chapter, day, host))
...
Рейтинг: 0 / 0
Таблицы для статистики
    #33577821
flyinghero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База данных MySQL. То есть вы предлагаете все хранить в одной таблице? Так в принципе сейчас и делается, но объем таблицы этой года через три будет весьма внушителен (миллионы записей), отчего тормозить будет.
...
Рейтинг: 0 / 0
Таблицы для статистики
    #33577950
flyinghero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я планировал делать так:

1) в одной таблице хранить полную информацию о кликах (ip, раздел, дата-время) в определенный последний период (скажем, за последние 30 дней). Через указанный срок старые данные из таблицы удаляются.

2) в другой таблице хранить все уникальные ip пользователей

2) в третей таблице для каждой пары "день-раздел" хранить общее число кликов, со скольки хостов эти клики были произведены и число хостов, с которых в этот день на сайт зашли первый раз (их ip не находился в таблице ip-шек). Тогда

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

Однако если мы, например. захотим посмотреть статистику по месяцам, то появятся трудности. Число кликов за месяц это сумма кликов по его дням, то же самое с уникальными (до этого не встречавшимися) хостами, но вот суммировать поля с общим числом хостов, откуда эти клики производились мы не можем. Ведь, например, если с одного и того же хоста каждый день заходили на сайт, то в поле хостов каждого дня месяца будет стоять 1. Фактически, заходил на сайт за весь месяц только один пользователь (пусть даже соверживший миллион кликов), но если просуммировать, получится 30, что действительность не отражает. Как поступить?
...
Рейтинг: 0 / 0
Таблицы для статистики
    #33578118
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я совершенно не знаю MySQL, но вообще говоря не считаю миллионы записей непременным условием для торможения :)

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

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

3. Альтернативно, можно подумать о той или иной форме партиционирования, например разбиении на таблицы по годам.

4. Крутиться с целью обойтись без общей таблицы можно, но это задача с экспоненциально возрастающей сложностью; чем больше хочется (а требования всегда растут), тем более задача начинает напоминать тришкин кафтан, достаточно скоро оказывается, что уже не разрабатывается новое, а постоянно судорожно собирается разваливающееся старое.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблицы для статистики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]