嗨,我正在用Netty和MySQL做一个服务器。
我的服务器的主要任务是记录用户的信息和聊天。
我对数据库非常陌生,我一直在为聊天编写模式。
我需要记录聊天室号码,发送者ID,接收者ID,内容和时间戳,每次聊天从客户端发送。我想每个聊天室会发送大约50个聊天。每天至少会建立100个聊天室。
我正在考虑为每个建立的聊天室做一个桌子。然而,这将使每月约3000张桌子。如果我把所有的聊天室都记录在一张桌子上,这张桌子就会很长。我猜从那个表中检索记录将花费大量的资源。
这部分是我被困的地方。记录聊天时,通常的做法是什么?
发布于 2013-08-27 09:43:57
每个聊天室都应该有一个数据库行,其中包含消息、用户和聊天室之间的外键关系。
有一个rooms表:
id, name, createdusers表:
id, username, password, createdmessages表:
id, room_id, user_id, message, time然后使用一些非常简单的联接来检索您想要的数据。例如,要检索聊天室中的最新消息:
SELECT u.username, m.message, m.time FROM messages
LEFT JOIN rooms r ON m.room_id = r.id
LEFT JOIN users u ON m.user_id = u.id
WHERE r.name = 'chatroomName'
AND m.time > lastPolledTime用上次检查邮件的时间替换lastPolledTime,以便删除重复的消息。
https://stackoverflow.com/questions/18461832
复制相似问题