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