您好我正在使用Netty和MySQL制作服务器。
我的服务器的主要任务是记录用户的信息和聊天。
我对数据库很陌生,而且我一直在为聊天编写模式。
我需要记录客户端发送的每个聊天的聊天室号码,发件人ID,收件人ID,内容和时间戳。 我想每个聊天室将发送50个聊天内容。每天至少会创建100个聊天室。
我正在考虑为每个创建的聊天室制作一张桌子。但是,这将每月制作约3000张桌子。 如果我在一张桌子上记录了所有聊天室,那么桌子就会很长。我猜测从该表中检索记录会占用大量资源。
这部分是我被困的地方。录制聊天记录时的常规做法是什么?
答案 0 :(得分:2)
每个聊天室都有一个数据库行,消息,用户和房间之间的外键关系应该没问题。
拥有rooms
表:
id, name, created
users
表:
id, username, password, created
messages
表:
id, room_id, user_id, message, time
然后使用一些非常简单的JOIN来检索您想要的数据。例如,要在聊天室中检索最新消息:
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
替换为您上次检查邮件的时间,以便删除重复项。