问题:聊天应用,如何保存聊天记录?

我正在用 Java 开发一个聊天应用程序。

使用的架构是服务器 - 客户端架构。

大部分代码使用 Java、用于 GUI 的 JavaFX 和作为数据库的 PostgreSQL。

由于这是一个聊天应用程序(桌面),我想知道哪种是存储聊天记录的最佳方式:

  1. 本地在一个文本文件中,客户端必须每次读取

  2. 在数据库中为 String (VarChar) 类型

3.在服务器中作为列表

基于三种方式的一些问题:

  1. 如果客户端从不同的机器连接,文本文件将不存在

  2. 是否可以使用聊天室ID 将每个文本条目存储在数据库中?

  3. 服务器运行时可以存储多少对象?

解答

在您的三个选择中,我建议您选择选项 #2 来存储聊天记录:一个数据库,原因如下:

  1. 如果您将聊天记录存储在本地文本文件中,您会遇到如何与他人同步等问题。此外,您可以修改文本文件的内容,而无需通过 Java 程序(例如使用编辑器)。如果此文件包含与敏感信息的聊天,并且有人可以访问您的计算机,他们可以阅读它。这会带来麻烦。

  2. 存储在数据库中是一个好主意,因为它为所有 Java 程序提供了一个中心位置。如果多人使用您的 Java 客户端,这将特别方便,这样他们就可以获取聊天历史记录,以及轻松地将聊天转移给其他人!我不仅会使用 String 类型(VarChar),还会尝试考虑其他一些可能有用的字段或列(即 timeSent、chatUserID、timeRead 等)。这也说明了通过使用数据库,您可以设置某种用户访问权限(用户名和密码),以便特定的人可以阅读特定的聊天记录。

  3. 如果您将服务器上的聊天作为列表存储在 Java 服务器本身中,并且如果您的服务器重新启动,您将丢失所有聊天历史记录。 太糟糕了。

总而言之,保持 Java 客户端-服务器-数据库架构非常好,从技术上讲,所有 3 个选项都可以工作,但是数据库是存储聊天历史的最佳方式!即使设置数据库需要一些工作,但由于数据库是为归档数据而构建的,因此与所描述的其他两种方法相比,它在效率和安全性方面更为优越。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐