【发布时间】:2017-02-10 03:05:48
【问题描述】:
我正在开发一个聊天网站。如何存储 2 个不同聊天的消息。是否必须为每个聊天创建一个新表,或者我可以使用一个表来存储所有聊天?
从长远来看(即在搜索期间)是否会影响后一种方法,因为每次用户打开聊天时都会从该表中检索所有消息?
【问题讨论】:
我正在开发一个聊天网站。如何存储 2 个不同聊天的消息。是否必须为每个聊天创建一个新表,或者我可以使用一个表来存储所有聊天?
从长远来看(即在搜索期间)是否会影响后一种方法,因为每次用户打开聊天时都会从该表中检索所有消息?
【问题讨论】:
这是我的建议,只使用一个表来存储消息,您将需要更多的表来维护其他相关数据。 也将一对一聊天也视为群聊,唯一的区别是对于最终用户,它仅被视为 1-1。
以下只是入门的基本结构,实际上您必须添加更多列或更改结构以支持数据同步、读取、传递的收件人、附件等
Table: User
Columns: userId, name, image and other user info columns
Table: Group
Columns: groupId, name
Table: Group_User_X
Columns: groupId, userId
Table: Message
Columns: messageId, senderUserId, groupId, content
现在,要为任何给定用户加载消息,您只需加入 Group_User_X 和 Message 表并获取用户所属组的消息。
如果您需要任何进一步的帮助,可以通过 contact@applozic.com 与我联系
【讨论】:
聊天应用程序的服务器端数据库
客户端和服务器之间的数据传输使用单个令牌密钥处理。在这里,服务器端脚本在服务器而不是客户端服务器上运行,以便传递内容(消息)以响应用户设备中执行的操作。
Server side database architecture
聊天应用程序的客户端数据库
该插图解释了服务器通过访问令牌密钥将数据传输到客户端设备的消息传输流程。此外,客户端设备将请求发送到多个服务器以使用客户端令牌密钥访问消息。
【讨论】: