HSQL 数据存储

Posted

技术标签:

【中文标题】HSQL 数据存储【英文标题】:HSQL Data Storage 【发布时间】:2012-12-22 10:09:30 【问题描述】:

我是第一次使用 HSQL。当我使用 HSQL 数据库服务器引擎连接 DatabaseMAnagerSwing 时,我看到 PUBLIC 架构已经存在,并且它包含该架构下的一些表,例如客户等。

我想知道当我将模式用作HSQL Database Server Engine时,数据(即公共架构和该架构的表)存储在哪里?

有人可以解释一下吗?

问候,

【问题讨论】:

【参考方案1】:

数据存储在文件中,就像在嵌入式模式下运行 HSQLDB 一样。 要为服务器管理的每个数据库配置文件的存储位置,您可以在启动服务器时提供command line arguments:

java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:mydb --dbname.0 xdb

或者求助Properties Files:

database.0=file:/opt/db/accounts
dbname.0=an_alias

database.1=file:/opt/db/mydb
dbname.1=enrollments

database.2=mem:adatabase
dbname.2=quickdb

连接层独立于物理层。这意味着您可以在嵌入式模式下访问最初由服务器进程创建的数据库文件,反之亦然。

【讨论】:

感谢您的回复。就我而言,由于我没有指定存储文件的位置,因此在我的情况下文件存储在哪里,即当我没有指定任何位置时文件存储的默认位置? 根据Properties File Documentation,server.database.0 的默认值为test。因此,您将找到一个测试文件夹,其中包含Appendix C 中描述的文件。回答您的其他问题,您数据库的所有 SCHEMAS 都将存储在该文件夹中,并使用相同的文件(例如,test.script + test.log)。查看Appendix C 了解更多信息。【参考方案2】:

Anthony 的回答涵盖了如何指定数据库文件的位置。

回复:“看到一个 PUBLIC 架构已经存在,并且它包含该架构下的一些表,例如客户等。”

PUBLIC 架构已存在于新数据库中。但是您看到的表格是您在单击 DatabaseManager 菜单中的“选项”项并从下拉菜单中选择“插入测试数据”时创建的。

当 HSQLDB 的 Server 实例在未指定数据库文件位置的情况下启动时,文件将在执行用于启动服务器的 Java 命令的目录中创建。

一个数据库可以包含多个模式。所有模式都存储在同一组数据库文件中。

【讨论】:

感谢您的回复。 SCHEMA 位置在哪里?它是在存储数据的同一个文件中,还是存在不同的文件?如果我创建一个新模式,那么这个新模式将存储在哪个文件中?也请告诉我它的位置。

以上是关于HSQL 数据存储的主要内容,如果未能解决你的问题,请参考以下文章

加密(base64)密码未存储在数据库 hsql 中

将 java.sql.Timestamp 类型存储到 HSQL 数据库中

finedb(内置的HSQL数据库)迁移数据到MySQL

HSQL 数据库:加载特定的 Java 类路径

从 XML (CLOB) 类型生成 HSQL 中的计算(虚拟)列

HSQL 数据库大小