HSQLDB簡介
Vincent 2006年2月24日
一 什么是HSQLDB?
HSQLDB是一個(gè)用java編寫的關(guān)系型數(shù)據(jù)庫,它支持ANSI-92 SQL (BNF tree format) plus SQL 99 and 2003 enhancements. 它提供了一個(gè)非常小而快速的數(shù)據(jù)庫引擎,同時(shí)提供了相關(guān)的JDBC驅(qū)動(dòng)和一些實(shí)用的工具。
最新的HSQLDB版本為1.8.0 ,經(jīng)過了1年的開發(fā),和1.7.2相比,1.8.0的功能更加強(qiáng)大, 對數(shù)據(jù)庫的容量支持達(dá)到了8GB,性能也更加出色。和當(dāng)年相比,HSQLDB已經(jīng)不僅僅很多人眼里的玩具,完全可以勝任商業(yè)的需求。(OpenOffice.org 2.0的數(shù)據(jù)庫引擎為HSQLDB1.8.0)
這里有一張數(shù)據(jù)庫的performance test對比圖(HSQLDB的性能遠(yuǎn)遠(yuǎn)超過其他的數(shù)據(jù)庫)
二 HSQLDB介紹
1.1 簡介
hsqldb.jar 包含所有的組件(數(shù)據(jù)庫引擎,jdbc驅(qū)動(dòng), 數(shù)據(jù)工具), 不同的命令用來執(zhí)行不同的組件。
hsqldb.jar主要包含了一下組件:





1.2 運(yùn)行工具(Running Tools)
所有的工具都以jar的方式來運(yùn)行,下面的例子講運(yùn)行AWT方式的DataBase Manager,我們假設(shè)hsqldb.jar位于../lib目錄中

Hsqldb工具的主類:





其中,DatabaseManager和SqlTool都可以有命令行參數(shù),你可以用-?來察看它們有什么參數(shù)。DatabaseManager和Transfer都有圖形界面可以更好地交互。
1.3 運(yùn)行HSQLDB
HSQLDB可以通過多種不同的方式來運(yùn)行,通常把它分為Server模式和In-Process模式(也叫做Standalone模式),對于每種模式,Jar中都有相應(yīng)的子程序來運(yùn)行HSQLDB。
每個(gè)HSQLDB數(shù)據(jù)庫包含2到5個(gè)命名相同但擴(kuò)展名不同的文件組成,他們位于同一個(gè)目錄下。例如,名為“test”的數(shù)據(jù)庫包含了以下幾個(gè)文件:





properties文件包含了數(shù)據(jù)庫的基本配置,script文件包含了Table的定義和其他相關(guān)的數(shù)據(jù)對象,以及non-cached表的數(shù)據(jù)。log文件記錄了數(shù)據(jù)庫最近所做的更新。dat文件包含了cached表的數(shù)據(jù),backup文件是上一次數(shù)據(jù)庫持久化后的壓縮備份文件,所有的這些文件都是最基本的,絕對不能刪除。如果你的數(shù)據(jù)庫沒有緩沖表(cached table),test.data和test.backup文件是不會(huì)存在。此外,HSQLDB數(shù)據(jù)庫可以鏈接到磁盤上任何地方任何格式的文本文件,比如CSV 列表。
當(dāng)"test"數(shù)據(jù)庫正在運(yùn)行時(shí),test.log文件用來記錄所有的操作記錄,"test.log"文件將在數(shù)據(jù)庫正常關(guān)閉(ShutDown)情況下自動(dòng)刪除。否則(在非正常退出的時(shí)候),它將用來在下次啟動(dòng)HSQLDB時(shí)恢復(fù)"test.log"中記錄的更新操作。"test.lck"文件也可以用來記錄數(shù)據(jù)庫是否被打開,它在HSQLDB正常退出的時(shí)候會(huì)被移除。有些情況下,HSQLDB會(huì)生成"test.data.old "文件,但隨后會(huì)被刪除掉。
注意: 當(dāng)HSQLDB引擎關(guān)閉數(shù)據(jù)庫的時(shí)候,它會(huì)產(chǎn)生擴(kuò)展名為.new的臨時(shí)文件,然后會(huì)把這些文件重命名為上面所列出的文件的名稱。