H2數據庫介紹


常用的開源數據庫:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB類似,十分適合作為嵌入式數據庫使用,其它的數據庫大部分都需要安裝獨立的客戶端和服務器端。
H2的優勢:
1、h2采用純Java編寫,因此不受平台的限制。
2、h2只有一個jar文件,十分適合作為嵌入式數據庫試用。
3、性能和功能的優勢
 
一. H2數據庫官網:http://www.h2database.com/
H2是一個開源的嵌入式數據庫引擎,采用java語言編寫,不受平台的限制,同時H2提供了一
個十分方便的web控制台用於操作和管理數據庫內容。H2還提供兼容模式,可以兼容一些主
流的數據庫,具有比較完備的數據庫特性,如支client/server連接,能夠支持標准的SQL語
句,支持存儲過程等。因此采用H2作為開發期、測試期和演示的數據庫非常方便,不太適合
作為大規模生產數據庫。
二.
a. 在內存中運行(單進程訪問)
數據庫只在內存中運行,關閉連接后數據庫將被清空,適合測試環境
連接字符串:
jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1
b. 嵌入式(單進程訪問)
數據庫持久化存儲為單個文件
連接字符串:
jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE
~/.h2/DBName表示數據庫文件的存儲位置,如果第一次連接則會自動創建數據庫
c. 服務模式(多進程訪問)
 web server:此種運行方式支持使用瀏覽器訪問H2 Console
 TCP server:支持客戶端/服務器端的連接方式
 PG server:支持PostgreSQL客戶端
H2支持三種服務模式:
啟動tcp服務連接字符串示例:
jdbc:h2:tcp://localhost/~/test 使用用戶主目錄
jdbc:h2:tcp://localhost//data/test 使用絕對路徑
jdbc:h2:ssl://localhost:8085/~/sample
 DB_CLOSE_DELAY:要求最后一個正在連接的連接斷開后,不要關閉數據庫
MODE=MySQL:兼容模式,H2兼容多種數據庫,該值可以為:
DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
 AUTO_RECONNECT=TRUE:連接丟失后自動重新連接
AUTO_SERVER=TRUE:啟動自動混合模式,允許開啟多個連接,該參數不支持在
內存中運行模式
TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:輸出跟蹤日志到控制台或文件,
取值0為OFF,1為ERROR(默認值),2為INFO,3為DEBUG
 SET TRACE_MAX_FILE_SIZE mb:設置跟蹤日志文件的大小,默認為16M
d. 連接字符串參數
e. 啟動服務模式,打開H2 Console web頁面
啟動服務,在命令行中執行
java -cp h2*.jar org.h2.tools.Server
執行如下命令,獲取選項列表及默認值
三. 運行方式
H2數據庫介紹
2017年9月20日 22:39
分區 DB 的第 1 頁 執行如下命令,獲取選項列表及默認值
java -cp h2*.jar org.h2.tools.Server -?
 -web:啟動支持H2 Console的服務
 -webPort :服務啟動端口,默認為8082
 -browser:啟動H2 Console web管理頁面
 -tcp:使用TCP server模式啟動
 -pg:使用PG server模式啟動
常見的選項如下:
四. 集群(尚未經過實際測試)
H2支持兩台服務器運行兩個數據庫成為集群,兩個數據庫互為備份,如果一個服務器失效,
另一個服務器仍然可以工作。另外只有服務模式支持集群配置。
a. 創建目錄
創建兩個服務器工作的目錄
# mkdir server1
# mkdir server2
b. 啟動tcp服務
執行如下命令分別在9101、9102端口啟動兩個使用tcp服務模式的數據庫
java org.h2.tools.Server-tcp -tcpPort 9101-baseDir server1
java org.h2.tools.Server-tcp -tcpPort 9102 -baseDir server2
c. 使用CreateCluster工具創建集群
java org.h2.tools.CreateCluster
-urlSource jdbc:h2:tcp://localhost:9101/~/test
-urlTarget jdbc:h2:tcp://localhost:9102/~/test
-user sa
-serverList localhost:9101,localhost:9102
如果兩個數據庫不存在,該命令將會自動創建數據庫。如果一個數據庫失效,可以先
刪除壞的數據庫文件,重新啟動數據庫,然后重新運行CreateCluster工具
d. 連接數據庫
現在可以使用如下連接字符串連接集群數據庫
jdbc:h2:tcp://localhost:9101,localhost:9102/~/test
e. 監控集群運行狀態
可以使用如下命令查看配置的集群服務器是否都在運行
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME='CLUSTER'
f. 限制
H2的集群並不支持針對事務的負載均衡,所以很多操作會使兩個數據庫產生不一致的
結果,執行如下操作時請小心:
RANDOM_UUID(), SECURE_RAND(), SESSION_ID(), MEMORY_FREE(), MEMORY_USED(),
CSVREAD(), CSVWRITE(), RAND()
自動增長列和標識列不支持集群,當插入數據時,序列值需要手動創建
不支持SET AUTOCOMMIT FALSE語句,如果需要設置成為不自動提交,可以執行方法
Connection.setAutoCommit(false)
H2可以通過CreateCluster工具創建集群,示例步驟如下(在在一台服務器上模擬兩個數據
庫組成集群):
• Dataflyer 一個查看和導出數據庫的工具
• DB Solo SQL 查詢工具
五. 能夠可視化訪問和查看H2數據庫的工具
分區 DB 的第 2 頁 • DB Solo SQL 查詢工具
• DbVisualizer 數據庫工具
• Execute Query Java寫的數據庫工具
• Flyway Java寫的敏捷遷移數據庫的工具
• fleXive JavaEE5 的開源框架,可以用來做復雜的開發已經Web應用的演化。
JDBC Console 一個小型的web應用,提供了一種執行SQL的能力,基於H2的控制台界
面,同時也支持JNDI數據源。
• HenPlus 一個用Java寫的SQL工具
• JDBC lint 能夠在我們使用JDBC API的時候,幫助我們寫出正確高效的代碼
OpenOffice 是一個OpenOffice.org組織的數據庫應用。其提供了進入關系數據源的
能力。
RazorSQL 一個SQL的查詢工具,能夠瀏覽數據庫,進行SQL語句的編輯,數據的管
理。
• SQL Developer 通用的數據庫管理前端。
• SQL Workbench/J 免費的獨立的DBMS SQL的工具
SQuirreL SQL Client 圖形化的工具,能夠查看數據庫的結構,瀏覽數據,執行SQL
命令
• SQuirreL DB Copy Plugin 用來把數據從一個數據庫復制到另外一個數據庫。
分區 DB 的第 3 頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM