将数据记录到文件服务器上的文件或更好地使用 MySQL?

Record data to file on fileserver or better use MySQL?

我为我的工作(大学的 IT 支持)编写了一个小程序来记录收到的所有查询并稍后对其进行评估。 因为同时接收到多个查询程序必须运行同时在多台pc上。 目前我们无法拥有自己的服务器(例如 MySQL),所以我的解决方案是编写一个程序,将查询保存到文件服务器上的单个文件中。文件用 myStatFile = new File(myFilepath + "/data/statistic.dat"); 打开,用 in = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(myFile, true), "UTF-8")); 写入。它运行良好,但随着 statistic.dat 文件变得越来越大,程序需要更多时间来打开文件、写入文件和关闭文件。

所以我对这里更有经验的程序员的问题是:是否有更有效的方法来做到这一点,或者提高性能的唯一可能性是获得像 MySQL 这样的数据库的服务器? 有没有人看到另一种不使用服务器但使用简单文件服务器的方法?

编辑: 首先感谢所有回答我问题的人。我知道这是一个非常广泛的问题,有很多解决方案,但在阅读您的回答后,我知道什么是可能的以及现在要走的路是什么。谢谢!

您已在 FileOutputStream 构造函数中将第二个参数设置为 true。这指示流将新数据附加到文件。

随着文件变大,这不会减慢速度。 Windows 和 Linux / BSD / Unix 传统操作系统都非常有效地处理文件附加。您应该尽快打开、写入和关闭。不要让文件保持打开的时间超过你必须的时间。

您可以安排 Java 程序在您写入文件时锁定文件。这将防止多个用户(您和您的同事)潜在地尝试同时追加。看这里。 How can I lock a file using java (if possible)

您仍然应该考虑为此应用程序使用数据库,但不是因为将记录附加到文件很慢。

顺便说一句,有几个很好的免费(免费的,免费的,小猫)支持桌面票务网络应用程序可用。

我肯定会坚持使用数据库服务器。您的应用程序的可扩展性不是很好,否则。

就 Ollie 的观点而言,支持台 Web 应用程序有一些免费选项。我用过 osticket,它的用途非常广泛。