Эта тема на forum.dklab.ru


mus: Трудности при проектировании
Господа, у меня вопрос!
Проектирую базу данных для сервиса чатов. База, соотвественно, MySQL... C текстовой базой я работать не собираюсь, пусть и скорость на стороне текстовиков...
Теперь к делу. Проектирую статистику для каждого чата. Что входит в статистику:
1. Кол-во сообщений в чате, отправленных за все время.
2. Кол-во сообщений, отправленных за сегодняшний день.
3. Кол-во пользователей (вот думаю, хранить ли или вычислять коунтом)
4. Позиция чата в рейтинге за вчерашний день (и, соотвественно, динамически генерируемые стрелочки вверх или вниз, означающие, в какой части рейтинга находится чат, относительно вчерашнего значения, к примеру, вчера 6-ой, сегодня 5-ый, стрелочка вверх, слева от нее +1 написано).
5. и многое другое...

Так вот, возникает сразу несколько вопросов:
1. Хранить ли, или вычислять кол-во зарегенных пользователей в чате?
2. Как мне инкрементировать кол-во отправленных за день сообщений? Неужто после каждого отправленного в чате сообщений выполнять запрос update... Это будет, как мне кажется, огромным минусом в быстродействии чата...Хотя ничего другого мне в голову не приходит. Но за этим я и пришел сюда к Вам за советом, чтобы узнать о чем-либо новом...
3. Как мне кажется, кол-во сообщений за все время нужно добавлять после окончания дня. Тоесть есть в таблице поля, типа segstat и allstat, в первом хранится сегодняшняя статистика, а в во втором общая, за все время, так вот, если, скажем, за день набирается 30 сообщений, то после 23:59 по москве просто к значению поля аллстат добавить значение поля сегстат и сегстат сбросить. Получается, что статистика за все время будет обновляться лишь раз в сутки, что совсем не противоречит задуманной системе подачи статистики. Так вот, каким образом мне запускать в 00:00 скрипт, который занимался бы этими операциями? Слышал про крон, но каков его принцип и вообще, то ли это?
4. Что бы Вы, как администратор своего чата на данном сервисе, хотели бы видеть из статистики?
Так же с удовольствием принимаю любые предложения, советы, наставления по реализации сего проекта, может у кого какие наработки есть, хитрости, буду премного благодарен, если предложите что-либо.

Ответьте пожалуйста хотя бы на 1 из 4 вопросов =))
Спасибо заранее!
Иван Шумков:
1. Я думаю, хранить. Не надо будет каждый раз пересчитывать. Это в какой-то степени кеширование.
2. Вы удаляете старые сообщения? как часто?
3. Если считать сообщения за день, то не составит в тот же момент считать и общее кол-во сообщений. Это можно сделать одним запросом, и к дополнительным нагрузкам это не приведет. Зато статистика более актуальная у вас будет.
Все верно - крон. Приложение выполняющее команды по расписанию. Поищите с ключевым словом "cron".
4. Статистика - не самое главное.
mus:
Иван Шумков
Благодарю за ответы!
Про крон разобрался отчасти, по крайней мере принцип.
Про второй пункт то ли я неправильно объяснил, то ли что ещё - черт его знает...
Мысль была такова, Вы можете просмотреть из под админки, сколько у Вас было посетителей сегодня/за все время. А про какие старые сообщения идет речь? Вообще-то у меня для чатов с бесплатным тарифным планом будет сохранение в памяти лишь 250 последних сообщений. У коммерческих чатов три дня или 5000 тыс. сообщений (вариативно, на выбор).
Про третий вопрос понял, в принципе - согласен на все сто!
Статистика - действительно, вещь не главная, но я уже напарывался на том, что мне постоянно заказчики тыкают пальцем на её отсуствие...
Поэтому решил с самого начала набить сервис кучей функций, в том числе - статистика!
Ещё раз благодарю за ответ!
Иван Шумков:
Можно просто раз пол часа (переодичность зависит от нагрузки, если не нагружает сервер, то можно и чаще) считать ( count(*) ) кол-во сообщения с момента последнего такого подсчета и заканчивая текущем временм (тоесть сколько новых сообщений за интервал) и записывать в таблицу статистики прибавляя к полю за сегодня и всего сообщний. Надо не забывать поле за сегодня раз в сутки обнулять.

Эта тема на forum.dklab.ru