Я ищу лучшее решение для реализации обмена сообщениями с несколькими пользователями в системе (в стиле Facebook).Схема базы данных для обмена сообщениями нескольким пользователям
Я пришел к следующей идее: где каждое сообщение принадлежит Message_Chain и в таблице Message_status перечислены пользователь-отправитель и пользователи-приемники. Однако я боюсь, что эта схема не очень эффективна, если в системе есть миллионы сообщений.
Может ли кто-нибудь предложить любое другое решение текущей проблемы? Или объясните, почему мое решение будет в порядке?
CREATE TABLE `message` (
`msg_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`msg_text` TEXT NOT NULL ,
`msg_date` DATETIME NOT NULL ,
PRIMARY KEY (`msg_id`));
CREATE TABLE `message_chain` (
`msgc_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`msgc_topic` VARCHAR(255) NULL ,
PRIMARY KEY (`msgc_id`));
CREATE TABLE `message_status` (
`msgsta_msg_id` BIGINT UNSIGNED NOT NULL ,
`msgsta_usr_id` INT UNSIGNED NOT NULL ,
`msgsta_msgc_id` INT UNSIGNED NOT NULL ,
`msgsta_is_sender` TINYINT(1) NULL ,
`msgsta_is_read` TINYINT(1) NULL DEFAULT NULL ,
`msgsta_is_deleted` TINYINT(1) NULL ,
PRIMARY KEY (`msgsta_msg_id`, `msgsta_usr_id`);
«Но я боюсь, что эта схема не очень эффективно использовать, когда есть миллионы сообщений в системе.» .. Я думаю, что вы должны сначала достичь этого предела, прежде чем слишком беспокоиться о некоторых деталях, преждевременная оптимизация - это корень всех зол :) – Jack 2010-11-23 13:59:25
Не согласен :) Зрелая планировка = нет головной боли в будущем – Websirnik 2010-11-23 14:18:21