在jar中访问捆绑为资源的HSQLDB“res”数据库非常慢

时间:2013-09-16 12:54:24

标签: java maven hsqldb

我尝试构建一个开源project,以便轻松访问机器学习数据集,这些数据集以易于访问的方式捆绑数据。基本上,我有代码,它将原始数据转换为HSQLDB file数据库,生成*.data*.properties*.script文件。然后,我将这3个文件放入我src/main/resources项目的Maven中并构建一个jar。然后,依赖于此jar的应用程序可以作为HSQLDB数据库访问res数据库。

从技术上讲,我可以毫不费力地完成所有工作。但是,访问数据非常慢。但奇怪的是,如果我有数据集项目和一个项目依赖于数据集,这些数据集都在Eclipse中打开并从那里运行,它就像人们期望的那样快。这意味着问题与被激起的HSQLDB文件有关。另一个线索是,DB越大,(看似)访问数据所需的时间就越长。

我尝试过以JVM args的形式提供内存和烫发空间。我也尝试在HSQLDB文件中设置各种*.properties标记。

任何想法??

编辑:我还使用maven-jar-plugin定义中的<compress>false</compress>元素关闭了jar压缩。

1 个答案:

答案 0 :(得分:0)

我尝试了许多方法,包括按照HSQLDB forum的建议设置缓存大小和缓存行。我最后通过Boris the Spider建议的解决方法解决了这个问题,该问题是:

  1. java.io.temp创建临时目录。
  2. 将数据库文件移出jar并进入临时目录。
  3. 使用这些文件使用file HSQLDB数据库。
  4. 之后通过删除临时目录进行清理。
  5. 像魅力一样工作。有点黑客,但至少它有效。