【发布时间】:2016-11-18 00:42:29
【问题描述】:
只是为了提供一些上下文,我正在使用 Pusher(云上的 Websocket 服务)开发一个实时聊天应用程序,其中每个消息在被推送到 websocket 服务器之前都记录在我的服务器中,然后将数据推送到客户端。所以我使用 MySQL 来存储消息。
所以我的消息就是这样一个表,其中包含以下字段id,chat_payload,message_time,user_id,room_id。
为了填充初始聊天室,我需要检索消息历史记录,其中每个消息对象都将包含 username,useravatar,chat_payload,timestamp。但 useravatar,username 分别存储在 users, user_meta 表中。因此使用运行时获取数据由于user_meta 表增长得非常快fast,加入显然看起来很昂贵。并且显然将用户名,useravatar 存储在messages 表中似乎不正确,因为它会带来更新问题。
那么考虑到上述情况,任何人都可以为同样的情况提出适当的数据库/应用程序设计吗?
【问题讨论】:
-
说实话,朋友…… “MySQL 的力量会让你震惊。”正确的做法,恕我直言,是“只存储 ID”,正如标准格式指南所建议的那样。
-
Varun 这个问题很差,你应该知道吧?
-
这太模糊太笼统了。请使用 DDL 来描述一个模式,包括候选键和外键以及与优化相关的使用和架构的最重要方面。就像现在一样,您的问题本质上是要求介绍数据库优化。请将其范围缩小到一些特定的设计权衡。
标签: mysql database-design livechat application-design denormalized