类似Facebook的消息的数据库设计[已关闭]

2022-08-30 22:57:56

我目前正在规划一个PHP / MySQL的新系统,并希望确保我的数据库可以处理我计划存储的数据量。我的新项目的功能之一是像Facebook这样的“消息”功能。我想确保为最终用户创造最佳体验。该网站最终将处理1000个用户,总共可能有数百万条消息。数据库设计的最佳方法是什么?MySQL甚至是合适的数据库吗?


答案 1

MySQL对数百万或数亿条记录没有问题,只要您正确设计数据库即可。

话虽如此,“像Facebook这样的消息功能”是一个非常广泛的定义。通常,您将定义一个表,将每条消息链接到创建它的用户(即,在messles表中有一列)。如果希望邮件发送给多个用户,则有一个表,通过存储由 和 和 组成的多个记录来定义一对多关系。向这些表添加适当的索引,您就完成了 80% 的进度。messagesuserIdmessage_recipientsmessageIdrecipientId

话虽如此,剩下的20%可能是一个杀手。不幸的是,你如何使用你的数据库将决定你还需要做什么,在做出这些判断之前,你必须提供有关你的应用程序的更多细节。例如,您可能希望考虑使用自动存档解决方案,使主表保持相对较小,并将旧数据移动到可在必要时访问的备份表。您可能不会立即需要它,但它将来可能会有所帮助。


答案 2

Facebook从MySQL开始,直到他们拥有超过1亿用户的7TB收件箱数据时才迁移到Cassandra

资料来源:Lakshman,Malik:Cassandra - 一个分散的结构化存储系统


推荐