【发布时间】:2015-06-01 22:18:29
【问题描述】:
只是一个关于向群组发送消息的最佳方式的问题(例如 whatsapp 群组消息)。
我将每个组的成员保存到一个单独的数据库表中,一旦用户向组发送消息,它就会从该表中检索用户。我有点卡在第二部分:
在我看来会有三种方法。
- 将消息插入整个组的数据库。根据用户所属的组将消息发回给不同的用户。
- 将消息插入数据库中的每个组用户。所以循环成员并为每个成员插入。与第一种方法相比,这具有可以跟踪下载、读取和删除状态的优势。
- 为消息创建一个表,并为消息接收者链接创建一个表。但我不确定如何以最优化的方式查询一组用户的所有数据(下载、读取等)。这可以在单个查询中实现吗?
有人知道最好的方法是什么吗?我可以想象方法 2 会很快填满数据库,但方法 1 没有跟踪消息状态的能力。
目前我正在使用方法1,但我遇到了用户删除消息时的问题。它仍然会在其他设备上返回,因为没有简单的方法为群组消息设置某个已删除标志。
有人知道电报、whatsapp 等应用程序是如何做到这一点的吗?以后发送数百万条消息时,方法 2 会不会出现问题?
问候,
罗恩
【问题讨论】:
标签: php mysql database-design