0

我担心我可能没有真正理解 MySQL 等数据库软件的实用性,所以也许这是一个容易回答的问题。

我正在编写一个程序来存储和访问用于程序的动物寓言。它是一个独立的应用程序,这意味着它不会连接到互联网或数据库(我的印象是需要连接到服务器)。目前,我有一个巨大的 .txt 文件,它通过一个简单的模式解析(栖息地在每第十行,从第七行开始;名称在每第十行,从第一行开始;等等)这很容易出现解析错误(读取指定编码无法识别的数据时出现问题,因为很多数据是由惰性数据输入者复制/粘贴的),我只是觉得每次我想要数据时解析一个巨大的 .txt 文件是非常低效的。另外,我从未见过一个部署的程序有一个名为“我们所有重要的数据.txt”的 .txt 文件。

数据库是答案吗?它们可以简单地用于像这样的基本应用程序吗?为每只动物写一堂课似乎很愚蠢。我听说 XML 也可以提供帮助——但我几乎对它一无所知,除了它是一种标记语言。

总之,我只是不知道如何在应用程序中存储大量数据。一个很好的类比是:您将如何存储字典/百科全书应用程序的数据?

4

2 回答 2

3

所以你是说没有互联网访问的独立应用程序不能有数据库连接?好吧,您认为数据库不能存在于独立应用程序中的基本假设是错误的。今天的 Web 应用程序使用浏览器辅助的 SQL 数据库来存储数据。你所需要的只是试验而不是推测。如果您需要方向,请从轻量级SQLite开始

于 2013-09-18T04:09:35.417 回答
0

虽然对于您所描述的那种应用程序来说,数据库无疑是一个好主意,但我会以您的方式提出另一个建议,如果您的数据根本不需要更改,并且没有“巨大”,这可能适合您量。

Java 提供了序列化对象的能力,您可以使用它来将对象实例数据直接保存到文件或从文件中检索。使用这种简单的方法,您可以:

  • 编写代码以将您的文本文件解析为可序列化的特定于应用程序的对象实例的集合;
  • 将这些实例序列化为构成应用程序一部分的某些文件;
  • 每次运行应用程序时将对象反序列化到内存中;
  • 编写自己的 Java 代码来自己从这些对象中搜索和检索数据,例如使用带有自定义比较器的有序集合结构。

如果您满足以下条件,这种方法可能就足够了:

  • 不要期望您的数据会改变;
  • 确实希望它始终适合您期望应用程序运行的 JVM 上的内存;
  • 不需要复杂的查询能力。

即使上面的一个或多个事情不成立,它仍然适合您尝试这种方法,这样您的下一步可能是使用所谓的对象关系映射工具,如HibernateCastor来持久化您的可序列化数据不在文件中,而是在数据库(XML 或关系)中。从那里,您可以使用某些数据库的功能来维护和查询您的数据。

于 2013-09-18T04:40:17.103 回答