Правильная организация форума.

pistol

Новичок
Правильная организация форума.

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

* Хранить количество сообщений каждого пользователя в отдельном поле (+1 после каждого поста, -1 при удлаении), или каждый раз искать все сообщения пользователя и выводить их количество (более расширяемо на мой взгляд).

* Тот же вопрос, но по отношению к статистике форума (общее количество сообщений, количество пользователей).

С одной стороны, если каждый раз пересчитывать разные количественные показатели, это займёт больше времени и задаст нагрузку на сервер. С другой, если создавать отдельную табличку для статистики и отдельное поле для количества сообщений одного пользователя, нужно будет заботиться о изменении всех этих параметров при удлаении и создании каждого сообщения, а это дополнительные запросы к БД.

Возможно, кто-то имеет опыт создания форума и спотыкался на вопросе, заданным мною. Жду ваших советов.
 

berkut

Новичок
pistol да, кто-то имеет. не судьба взять invision power board, vbulletin и посмотреть, как умы сделали?
Хранить количество сообщений каждого пользователя в отдельном поле (+1 после каждого поста, -1 при удлаении)
определись. нужно держать большую нагрузку - денормализуй.
 

pistol

Новичок
не судьба взять invision power board, vbulletin и посмотреть, как умы сделали
Перебирать код всего форума? Там может быть сделано так или иначе в зависимости от других фич, которых я не смогу узнать, не перебрав весь форум.

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

А вот насчёт статистики... Всё же не вижу правильным создавать отдельную табличку.
 

berkut

Новичок
Перебирать код всего форума?
а зачем тогда вообще что-то спрашивать? пиши-уж тогда как хочешь.
если создавать отдельную табличку для статистики и отдельное поле для количества сообщений одного пользователя, нужно будет заботиться о изменении всех этих параметров при удлаении и создании каждого сообщения, а это дополнительные запросы к БД
как правило запросов на выборку в разы больше чем запросов на изменение - поэтому дополнительные, причём очень лёгкие запросы при изменении роли не сыграют
 

Фанат

oncle terrible
Команда форума
berkut
давай ты больше никогда в качестве ответа на вопрос не будешь говорить "возьми код на сто мегабайт и посмотри в нем".
Спасибо.
 

pistol

Новичок
как правило запросов на выборку в разы больше чем запросов на изменение - поэтому дополнительные, причём очень лёгкие запросы при изменении роли не сыграют
Да, действительно. Но вариант с выборкой "на лету" более расширяемый. Можно забыть при удалении\добавлении сообщения о редактировании дополнительных полей :).

Потому и спрашиваю, может, кто-то спотыкался на этом, может, дальше возникнут определенные проблемы в том или том варианте. При проектировании всё не учтеш. Всегда какие-то проблемы всплывают из-за сущей мелочи в начале.
 

Фанат

oncle terrible
Команда форума
При проектировании всё не учтеш. Всегда какие-то проблемы всплывают из-за сущей мелочи в начале.
Совершенно верно.
Поэтому не парься, а пиши, как есть. Тем более, что идеального метода все равно не существует. А рефакторить придется все равно, в любом случае - даже если ты вместо написания форма год будешь сидеть в интернете и опрашивать всех гуру рнр в мире.
 

berkut

Новичок
*****
где там 100 Мб? выкинуть хтмл, js, картинки - осталось на пару дней - это чтобы от и до. выкинуть все общие библиотеки - осталось мизер. более-менее функциональный форум писать - это дело не на неделю и не на две. посему ведь не страшно потратить день-два на изучение готовых?
 

pistol

Новичок
Ладно, спасибо всем за ответы, последую по старому пути проб и ошибок :)
 

A1x

Новичок
Автор оригинала: pistol
Можно забыть при удалении\добавлении сообщения о редактировании дополнительных полей :).
чтобы не забывать можно написать пару триггеров
 

Stalone

Новичок
люди, я вот что-то затупил тоже.

есть у меня таблица категорий интересов (id,interest) и ещё одна подкатегорий интересов (id, chain)
ну и relations (id, user_id, interest_id, chain_id)

хочу возле каждого интереса, показывать кол-во интересующихся им людей, как на moikrug. например Футбол (882 чел.), Малайзия (322 чел.)

лучше, наверное, для этого поле сделать отдельное? и плюсовать/минусовать при добавлении/удалении. чем каждый раз подсчитывать кол-во юзеров на каждый интерес?

туплю?
 

Kill_Santa

Новичок
mysql позволяет посчитать кол-во элементов в таблице, подходящих под условие, не выполняя SELECT.
Подробнее на mysql.ru/faq
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
mysql позволяет посчитать кол-во элементов в таблице, подходящих под условие, не выполняя SELECT.
Подробнее на mysql.ru/faq
Датычто!?

-~{}~ 28.02.08 22:23:

Просвяти, пожалуйста.
 

Креведка

Новичок
моё личное мнение - делай отдельным полем. как то тоже с этим сталкнулся, но не парился, а каждый раз подсчитывал, через полгода форум стал заметно тормозить. введение ключей в таблицу конечно помогло, но не так как введение нового поля
 

berkut

Новичок
mysql позволяет посчитать кол-во элементов в таблице, подходящих под условие, не выполняя SELECT.
Подробнее на mysql.ru/faq

это зачеркнуть и всё правильно
 
Сверху