HSQL 數據庫引擎

HSQL 數據庫引擎
開放源碼的數據庫引擎―HSQL是基於Thomas Mueller的Hypersonic SQL項目。它完全是由Java是編寫的同時也是一種廣泛用於嵌入式的數據庫。它被包含在許多J2EE應用服務器中。在移動設備上,HSQL運行在PersonalJava和FP/PP平臺上。HSQL是完全免費的。你能自由地將它重新部署到你的應用程序中,這對移動應用程序來說是容易的。
HSQL提供一個支持%95JDBC接口和所有JDBC數據類型的JDBC驅程。它支持事務,外鍵甚至Java存儲過程。在HSQL中的表能寄存在內存中和保存在磁盤文件中。HSQL只有少於160-KB的存儲器足跡footprint。它也爲PersonalJava設備發佈了一個數據庫管理控制檯(經過Sharp Zaurus上的測試)
然而,HSQL缺少一些商業移動數據庫上所需的高級性能和安全功能。更重要的是,HSQL不能提供任何同步解決方案。它也缺少一個爲MIDP設備的解決方案。 

一、簡介:
hsql數據庫是一款純Java編寫的免費數據庫,許可是BSD-style的協議。
相對其他數據庫來說,其體積小,才563kb。
僅一個hsqldb.jar文件就包括了數據庫引擎,數據庫驅動,還有其他用戶界面操作等內容。
下載地址:http://hsqldb.org/

二、使用hsql數據庫:
1、hsql數據庫引擎有幾種服務器模式:常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-On­ly數據庫。


2、最爲常用的Server模式:
1)首先卻換到lib文件夾下,運行java -cp hsqldb.jar
org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
執行命令後,將會在db文件夾下創建一個數據庫mydb,別名(用於訪問數據庫)是xdb,如果存在mydb數據庫,將會打開它。
2)運行數據庫界面操作工具:java -cp hsqldb.jar
org.hsqldb.util.DatabaseManager
在Type選項裏選上相應的服務器模式,這裏選擇HSQL
Database Engine
Server模式;Driver不用修改;URL修改爲jdbc:hsqldb:hsql://localhost/xdb
(主要這裏xdb就是上面我們設置的別名);user裏設置用戶名,第一次登錄時,設置的是管理員的用戶名,password設置密碼。然後點擊Ok。
3)第一次運行數據庫引擎,創建數據庫完畢。好了,你可以打開db文件夾,會發現裏面多了幾個文件。
mydb.properties文件:是關於數據庫的屬性文件。
mydb.script:hsql主要保存的表(這裏按hsql的說法是Memory表,就是最爲常用的),裏面的格式都是文本格式,可以用文本查看,裏面的語­句都是sql語句,熟悉sql語句的話,你也可以手動修改它。每次運行數據庫引擎的話都是從這裏加載進內存的。
mydb.lck表示數據庫處於打開狀態。
其他的請參看hsqldb包裏的手冊。


3、WebServer模式和Server運行模式基本一樣,只是支持了Http等協議,主要用於防火牆,默認端口是9001。啓動Server,java
-cp hsqldb.jar org.hsqldb.WebServer ...剩餘的和上面的一致。


4、Servlet模式可以允許你通過Servlet容器來訪問數據庫,請查看hsqlServlet.java的源代碼,和WebServer類似。


5、另一個值得思考的模式是Standalone模式:不能通過網絡來訪問數據庫,主要是在一個JVM中使用,那樣的話,訪問的速度會更加快。雖然文檔裏面提到­主要是用於開發時使用,但是我們可以假設一下,該方法不需要一個引擎類的東西,而類似於打開文件的方式,返回一個Connection對象:
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb",
"sa", "");
將會在當前目錄找到mydb數據庫相關文件,打開並返回一個Connection對象。該方式有點好處就是可以不使用引擎,在需要的時候操作數據。所以那些對數­據庫不是特別有要求的,但又需要一個操作數據庫的方式的話,可以使用這種方法。對於那些不想額外在數據庫引擎花費金錢的話,可以使用這種方法。但是不推薦使用該­方法。記得Hibernate裏SessionFactory可以使用openSession(Connecttion
c)來獲得一個Session對象的,因此,在測試或者實際應用的話都可以這樣使用。


6、Memory-Only
數據庫:顧名思義,主要是內存中使用,不用於保存數據。可以用於在內存中交換數據。


上面是關於hsqldb的一些基本信息的介紹,可以看到它的一些優勢和特性。
我們可以把hsqldb內置在web程序中,除考慮Standalone模式外,最好是採用最爲常用的Server模式。
那麼Server模式如何和web程序合理搭配使用呢。
可以採用兩種方式:
1)採用上面提到的方法,運行java -cp hsqldb.jar
org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
來啓動db,通過設置的URL:jdbc:hsqldb:hsql://localhost/xdb
以達到在程序中訪問hsql數據庫的
(注:設置URL等信息,可以通過hibernate來配置,例如:
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost/xdb )
2)爲了省去第一種方法的瑣碎,可以在啓動web容器的過程中同時啓動hsqldb。具體做法如下:編寫一個有關hsql的Listener類,擴展javax­.servlet.ServletContextListener,可以在配置文件中設置dbPath、dbName、port等等hsqldb的信息,啓動h­sqldb。
在web.xml中配置



com.iplan.portal.framework.web.HsqlListener</listener-class&shy;>
</listener>
這樣在啓動web容器的時候,同時啓動了hsqldb,關閉容器的時候同時也shutdown掉hsqldb。


還有一點說明的是:在單體或是結合測試的時候,可以採用Memory-Only
數據庫,這樣可以保證原有數據庫中數據的完整性,這也是比較好的一個功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章