我正在刷新/重写我几年前写的数据分析应用程序。我想要实现的目标如下:
我对SQL的阅读不是很好,但我设法将信息输入表中并尝试了简单的查询。因此,为了完成“数据库创建者”应用程序,我只需要弄清楚如何“打包”数据库。
在生成数据库时,我已经使用 mem 和文件“目录”as described in the HSQLDB user guide进行了实验。我看到它的方式,使用 mem 目录我无法将它们写入磁盘(稍后分发)和文件目录我有几个需要处理的文件:
文件:目录由2到6个文件组成,所有文件都相同 但具有不同的扩展名,位于同一目录中。对于 例如,名为“test”的数据库由以下文件组成:
•test.properties
•test.script
•test.log
•test.data
•test.backup
•test.lobs
属性文件包含有关数据库的一些设置。脚本文件包含表和其他数据库对象的定义,以及非高速缓存表的数据。日志文件包含 最近对数据库的更改。数据文件包含数据 缓存表和备份文件是最后一个的压缩备份 已知的一致状态 数据文件。所有这些文件都是必不可少的,不应删除。对于某些目录,test.data和test.backup文件 将不会出席。除了那些文件,还有一个HyperSQL数据库 任何地方都可以链接到任何格式化的文本文件,例如CSV列表 磁盘。
问题:
我认为*.script
和*.properties
文件是最重要的文件,但指南明确指出所有文件都是必不可少的,不应删除。由于我的案例中没有*.data
文件,并且生成我的数据库的所有数据都存储在*.script
文件中(以明文形式),这让我觉得当我“打开”该文件时, JVM重新创建整个数据库。它是否正确?这不是一种非常低效的数据表示吗?
如果我在(1)中的理解是正确的,为什么其他文件必不可少?我需要分发它们吗?
如果(1)和(2)没有偏离轨道,那么我有什么选择来实现我的目标?例如,gzip所有文件并以这种方式传输它是否可行?然后我的分析软件需要在合理的位置打开它们,并在那里“拥挤”时不时进行清理......
答案 0 :(得分:0)
如果没有* .data或* .lobs文件,则.script文件包含所有数据以及表定义。在这种情况下,JVM通过读取.script文件来重新创建数据库。
如果存在其他文件,则必不可少。如果您不使用LOB,则不会有.lobs文件。如果您没有磁盘表(CACHED表),则不会有.data文件。
您只能分发.script文件。每次打开此文件时,如果该文件不存在,将创建.properties文件。
如果您的数据库没有更改,您可以使用res:选项。对于更改并需要重新加载的数据库,请使用file:option。