gpt4 book ai didi

php - 群发消息的数据库设计

转载 作者:行者123 更新时间:2023-11-29 02:21:44 25 4
gpt4 key购买 nike

只是一个关于向群组发送消息的最佳方式的问题(例如 whatsapp 群组消息)。

我将每个组的成员保存到一个单独的数据库表中,一旦用户向该组发送消息,它就会从此表中检索用户。我有点卡在第二部分了:

在我看来,应该有三种方法。

  1. 将消息插入整个组的数据库。根据用户所属的组将消息发回给不同的用户。
  2. 将消息插入到组中每个用户的数据库中。所以循环成员并为每个成员插入。这比第一种方法的优势在于可以跟踪下载、读取和删除状态。
  3. 为消息创建一个表,为消息收件人链接创建一个表。但我不太确定如何以最佳方式查询以检索一组用户的所有数据(下载、读取等)。这在单个查询中可能吗?

有人知道最好的方法是什么吗?我可以想象方法 2 会很快填满数据库,但是方法 1 没有跟踪消息状态的能力。

目前我正在使用方法 1,但遇到用户删除消息时出现的问题。它仍会在其他设备上返回,因为没有简单的方法可以为群组消息设置特定的已删除标志。

有谁知道 telegram、whatsapp 等应用程序是如何做到这一点的?当发送数百万条消息时,方法 2 会在以后出现问题吗?

问候,

罗恩

最佳答案

我会像这样分开它。

消息

id, 消息, owner_id, 已删除

群组

身份证、姓名

消息组

message_id, group_id

用户组

用户id, 组id

那么您可以不需要向该组中的所有用户添加消息。当您插入一条新消息时,您首先将其插入到 Messages 中,捕获 id 并将其与消息 id 和组 id 一起插入到 Message_Group 中。要获取组的消息,只需加入 Message_Group 和 Messages,就大功告成了。当然,您还需要加入 user 表以捕获谁写了该消息。

关于php - 群发消息的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com