可扩展的MySQL数据库,用于类似邮件的消息
假设我们有一个受欢迎的网站.我们需要在用户之间实现类似邮件的消息传递. 用户(user_id) 消息(message_id,sender_id(引用user_id),receiver_id(引用user_id),主题,正文). 该方法有2个显着的局限性 >所有用户的所有消息都存储在一个表中,导致其高负载并降低整体数据库性能. 另一个解决方案使用3个表: 用户(USER_ID) Sent_messages(sent_id,正文) Received_messages(sent_id,正文) received_messages的主题和正文从sent_messages的相应字段中复制. 这种方法导致 >通过将信息从一个表复制到另一个表来对数据库进行非规范化 所以这里提出问题: >考虑到哪种设计更适合高负载和可扩展性? (我认为这是第二个) 谢谢! 附:我知道在解决这些可扩展性问题之前,网站必须非常成功,但我想知道如果需要该怎么做. UPDATE 目前,对于第一个版本,我将使用Daniel Vassallo提出的设计.但如果将来一切正常,设计将改为第二个.感谢Evert减轻了我的担忧. 最佳答案 在向多个收件人发送邮件的情况下,您可能希望避免多次复制邮件正文.这是您可能需要考虑的另一个选项:
这种模式可能比电子邮件更像推特,但它可能带来一些优势. 规则是: >消息只能由一个用户发送,在每条消息的sender_id中引用. 这些是一些优点: >这比原始问题中提到的两个选项占用的空间更少,特别是如果用户通常会向多个收件人发送邮件. 对于大多数应用程序,如果对上述模型使用乐观隔离级别,即使您希望以每秒几个的速率交换消息,也不应该存在性能问题.另一方面,如果您期望每秒有数百或数千条消息,那么考虑其他选项可能就是这种情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |