Не Совсем По Yii

Здравствуйте. Делаю доску объявлений на yii, хотел бы добавить к функционалу обмен сообщениями между пользователями. Так как опыта немного, хотелось бы знать, как бы это реализовать, скажем так, кошернее. Заводить на каждого пользователя таблицу с сообщениями, с полями for, или делать общую таблицу всех сообщений с полями id from и id for и потом выбирать из нее? Но тогда сильно упадет производительность… В общем подскажите пожалуйста, кто как делал такое. И еще, стоит ли crud делать на AR (производительность не подведет?) или все таки query builder? Спасибо.

Я бы сделал общую таблицу для всех сообщений. AR однозначно медленней обычного запроса.

Я делал одной таблицей (и, по-моему, других “кошерных” вариантов тут нет), с ActiveRecord тоже проблем нету, если вы не собираетесь выводить тысячи сообщений за раз :)

Спасибо.

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

Я не вижу в этом проблемы, если по такой таблице не нужно осуществлять поиск или выборку данных по сложным условиям.

Если нет сложного поиска по этой таблице и миллионов записей то да. Если есть миллионы - то противопоказано.

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

Ну даже в таком случае это неприятно. Размер таблицы растет очень быстро, и на миллионах она добирается до гигабайтов. Хотя да, елси поиска нет, то ничего страшного.

У меня такая вот беда на 1м проекте, табличка перевалила за 60м уже, и 1 поле с сериализацией(тогда я не знал что так лучше не делать, каюсь). Поиск работает шустро, так как все поля заиндексированы, по которым он идет, но вот размер таблицы напрягает.

Денормализация БД ради ускорения/упрощения выборок это обычная практика, и о размерах тут никто не думает :)

25гб база, может мне страшно потому что я таких не видел ранее?)

Да и сервер то обычный дедик, было бы это на облаке - реально не думал бы :rolleyes:

Интересно, а если хранить данные не в сериализованном виде, то база будет существенно меньше места занимать?