聊天应用程序的数据库设计

时间:2016-01-24 22:45:08

标签: php mysql database-design

我正在尝试使用AJAX,PHP和mySQL创建一个网络聊天应用。我在使用数据库结构时遇到了麻烦..这就是我的想法:

用户表:包含基本用户的信息

聊天表:包含基本列,如'to','from''timestamp'等。

问题:

我认为这会很快变得非常混乱,因为很多用户都会查询同一个表。更不用提一些安全问题了。我想为每个对话创建一个单独的表。这是一个好主意吗?你最喜欢的结构是什么?

1 个答案:

答案 0 :(得分:3)

每个对话的单独表格确实非常混乱。单个表格会变得庞大并且会在具有足够音量和累积的情况下降低性能。

如果您不需要在数据库中永久存储每一行​​对话,则只需在聊天行表中清除对话即可。如果您想在过去的会话中搜索行,您只需要将其保留在那里。 (使用其他方法来保持聊天统计等。)

您可以存档会话的连接/序列化版本,即。整个批次在一个块中,在文件系统中的文件中,或者与具有相关元数据的单独表格(用户,长度,持续时间等)。只要旧的会话再次变为活动状态,就可以重新加载它。

如果您确实希望分发每桌负载,可以使用以下方法:跟踪典型的用户连接,然后生成足够数量的组专用表,或使用任何其他有效的用户聚合算法。但是,如果您定期清除聊天行表,那么在数据库性能成为问题之前,它会占用大量的内容。