【发布时间】:2011-05-14 11:46:38
【问题描述】:
我正在寻找向系统内的多个用户发送消息的最佳解决方案(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`);
【问题讨论】:
-
“但是我担心当系统中有数百万条消息时,这个模式使用起来效率不高。”..我认为你应该先达到这个限制,然后再过分担心某些细节,过早的优化是万恶之源:)
-
不同意 :) 成熟的计划 = 没有未来的头痛
标签: mysql database facebook schema messages