如何在数据库中存储用户之间的消息?

How to store messages between users in database?

我正在为一个项目构建一个类似于消息传递应用程序的小型 e-mail,用户可以在其中向另一个人发送消息,其中包含会议时间等信息,我想知道如何存储所有交换的消息。 我的问题是:

我在网站上搜索过其他类似问题,但大多数问题似乎都集中在 real-time 消息传递或特定实施技术上。

感谢您的帮助!

每个用户 table 是个坏主意。这意味着每个查询都会不同,并且对于每个新用户,您都需要修改数据库。这很难构建、难以维护,而且对您的数据库来说效率也很低。

因此,只需将其存储在一个 table 中即可。如果您有适当的索引(和适当的硬件),几百万行将不是问题。

如果您担心性能不佳,您可以删除非常旧的消息。或者您可以将它们移动到 'archive' table。如果用户想要查看最近的消息(过去一年左右),他们可以从正常的 table 中获取它,而较早的消息可以从另一个中获取。通常 acceptable 挖掘档案有点慢,所以如果 table 变得非常大可能没关系。

就是说,您已经提到了 e-mail。我会认真考虑检查实际 e-mail 和它附带的 post 框的可能性。有许多现有的实现,它是一个强大的协议,自互联网诞生以来就一直存在,所以也许你不应该重新发明轮子。

E-mail 可以有 headers(也可以自定义 headers)和多个部分,所以即使 'normal' e-mail 不够,您仍然可以使用 e-mail 作为自定义消息类型的传输层。