在Java中的应用程序中存储大量类字典数据

时间:2013-09-18 03:53:34

标签: java performance

我担心我可能无法真正理解像MySQL这样的数据库软件的实用性,所以这可能是一个容易回答的问题。

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

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

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

2 个答案:

答案 0 :(得分:3)

您是说没有互联网访问权限的独立应用程序无法建立数据库连接?那么你的基本假设是DB在独立应用程序中不存在是错误的。今天的Web应用程序使用浏览器辅助的SQL数据库来存储数据。你所需要的只是实验而不是推测。如果您需要方向,请从轻量级SQLite

开始

答案 1 :(得分:0)

虽然数据库无疑是您所描述的应用程序的一个好主意,但我会按照您的方式提出另一个建议,如果您的数据根本不需要改变,那么这可能适合您,并且不存在“巨大”的数量。

Java提供serialise objects的功能,您可以使用它来持久存储和直接从文件中检索对象实例数据。使用这种简单的方法,您可以:

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

如果您:

,这种方法就足够了
  • 不要指望您的数据发生变化;
  • 期望它始终适合您希望运行应用程序的JVM内存;
  • 不需要复杂的查询功能。

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