mysql邮箱用什么类型_可扩展的MySQL数据库,用于类似邮件的消息

假设我们有一个受欢迎的网站.我们需要在用户之间实现类似邮件的消息传递.

典型的解决方案是使用2个表:

用户(user_id)

消息(message_id,sender_id(引用user_id),receiver_id(引用user_id),主题,正文).

该方法有2个显着的局限性

>所有用户的所有消息都存储在一个表中,导致其高负载并降低整体数据库性能.

>当有人需要同时向多个用户发送消息时,会复制该消息(recipients_count)次.

另一个解决方案使用3个表:

用户(USER_ID)

Sent_messages(sent_id,正文)

Received_messages(sent_id,正文)

received_messages的主题和正文从sent_messages的相应字段中复制.

这种方法导致

>通过将信息从一个表复制到另一个表来对数据库进行非规范化

>用户实际上可以删除发送/接收的消息,而无需从接收器/发送器中删除它们.

>消息占用的空间大约是2倍

>每张表的装载量减少约2倍.

所以这里提出问题:

>考虑到哪种设计更适合高负载和可扩展性? (我认为这是第二个)

>是否有其他数据库设计可以处理高负载?它是什么?有什么限制?

谢谢!

附:我知道在解决这些可扩展性问题之前,网站必须非常成功,但我想知道如果需要该怎么做.

UPDATE

目前,对于第一个版本,我将使用Daniel Vassallo提出的设计.但如果将来一切正常,设计将改为第二个.感谢Evert减轻了我的担忧.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值