标签归档:hsqldb

hsqldb

hsqldb是纯java数据库,启动数据库只需引入hsqldb的jar包即可,非常方便,居家旅行必备,非常适合开发一些小型应用。

hsql运行模式有三种:

1,在内存中运行,数据不写入磁盘。

启用内存模式只需在connection的url设置为:jdbc:hsqldb:mem:dbname即可,如:

DriverManager.getConnection("jdbc:hsqldb:mem:mydb","sa","")

2, In-Process (Standalone)模式:

在此模式下数据库与应用运行在同一个jvm中,可以随应用一同启动,可以将数据写入磁盘。但是只能在一个进程中运行,不能通过其他工具同时连接。

启用此模式设置connection的url为:jdbc:hsqldb:file:dbaddr”,dbaddr为数据库的地址,在初次连接时,会自动建立数据库相关文件,默认登录用户名为sa。

 con =DriverManager.getConnection("jdbc:hsqldb:file:D:/hsqldb/testdb","sa","");

此模式数据写入时,也是在内存中,当一定时间周期后,或者在关闭应用时,调用“shutdown”命令,数据才会写入磁盘,如:

statement.executeUpdate("shutdown")

或者在connection的url后面添加“;shutdown=true”:

 con =DriverManager.getConnection("jdbc:hsqldb:file:D:/hsqldb/testdb;shutdown=true
","sa","");

另外可以设置 WRITE_DELAY参数来实时写入数据(默认是20):

 statement.execute("SET WRITE_DELAY 0 MILLIS");

在Standalone模式下,jvm会在每隔WRITE_DELAY设置的时间后将内存中的数据写入到硬盘文件一次。设置shutdown应该是在应用关闭时候将内存数据写入硬盘script的文件,如果未运行shutdown或者设置”shutdown=true”参数,而直接关闭jvm的情况下可能会导致数据最后写入硬盘后的数据不能及时写入文件。而设置WRITE_DELAY是将延迟写入时间设置为0,所以数据实时写入了,但是如果写入频繁的情况下,可能IO开销会很高。该结论是否正确,未做深入研究。
3,server模式,另起一个服务,可以通过其他工具链接。

附:hsqldb用户指南