H2 Database是什么?
H2 Database是一個(gè)開源的嵌入式數(shù)據(jù)庫(kù)引擎,采用java語言編寫,不受平臺(tái)的限制,同時(shí)H2 Database提供了一個(gè)十分方便的web控制臺(tái)用于操作和管理數(shù)據(jù)庫(kù)內(nèi)容。H2 Database還提供兼容模式,可以兼容一些主流的數(shù)據(jù)庫(kù),因此采用H2 Database作為開發(fā)期的數(shù)據(jù)庫(kù)非常方便。
H2 Database的作用
1.H2 Database最大的用途在于可以同應(yīng)用程序打包在一起發(fā)布,這樣可以非常方便地存儲(chǔ)少量結(jié)構(gòu)化數(shù)據(jù)。
2.H2 Database可用于單元測(cè)試。啟動(dòng)速度快,而且可以關(guān)閉持久化功能,每一個(gè)用例執(zhí)行完隨即還原到初始狀態(tài)。
3.H2 Database可作為緩存,作為NoSQL的一個(gè)補(bǔ)充。當(dāng)某些場(chǎng)景下數(shù)據(jù)模型必須為關(guān)系型,可以拿它當(dāng)Memcached使,作為后端MySQL/Oracle的一個(gè)緩沖層,緩存一些不經(jīng)常變化但需要頻繁訪問的數(shù)據(jù),比如字典表、權(quán)限表。不過這樣系統(tǒng)架構(gòu)就會(huì)比較復(fù)雜了。
H2 Database數(shù)據(jù)庫(kù)運(yùn)行方式
內(nèi)存模式
數(shù)據(jù)庫(kù)只在內(nèi)存中運(yùn)行,關(guān)閉連接后數(shù)據(jù)庫(kù)將被清空,適合測(cè)試環(huán)境,連接字符串:jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1,如果不指定DBName,則以私有方式啟動(dòng),只允許一個(gè)連接。
嵌入式
數(shù)據(jù)庫(kù)持久化存儲(chǔ)為單個(gè)文件。連接字符串:jdbc:h2:file:~ /.h2/DBName;AUTO_SERVER=TRUE。~/.h2/DBName表示數(shù)據(jù)庫(kù)文件的存儲(chǔ)位置,如果第一次連接則會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)。
服務(wù)模式
Web Server
此種運(yùn)行方式支持使用瀏覽器訪問H2 Console。
CP Server
支持客戶端/服務(wù)器端的連接方式。
PG Server
支持PostgreSQL客戶端。
H2 Database的優(yōu)勢(shì)
H2 Database采用純Java編寫,因此不受平臺(tái)的限制。只有一個(gè)jar文件,十分適合作為嵌入式數(shù)據(jù)庫(kù)試用,提供了一個(gè)十分方便的web控制臺(tái)用于操作和管理數(shù)據(jù)庫(kù)內(nèi)容。
運(yùn)行模式
嵌入式模式
嵌入式模式下,應(yīng)用與H2運(yùn)行于同一個(gè)JVM中,H2 Database被應(yīng)用啟動(dòng)。該模式也是性能最好的模式,也是官方推薦的模式。
服務(wù)器模式
服務(wù)器模式下,H2 Database被H2 Server啟動(dòng)(獨(dú)立于應(yīng)用的JVM),應(yīng)用與數(shù)據(jù)分離,應(yīng)用使用遠(yuǎn)程連接訪問數(shù)據(jù)庫(kù),服務(wù)器可以與應(yīng)用部署與同一臺(tái)機(jī)器,也可以部署與另一臺(tái)機(jī)器。
事實(shí)上,H2 Server本身也是使用嵌入式模式來啟動(dòng)運(yùn)行H2 Database的。顯然,由于服務(wù)器模式是通過遠(yuǎn)程連接訪問數(shù)據(jù),其性能也要低于嵌入式模式。
混合模式
該模式是嵌入式模式與混合模式的融合。一個(gè)應(yīng)用啟動(dòng)嵌入式模式的H2 Database,其他應(yīng)用可以將其作為服務(wù)器模式來遠(yuǎn)程訪問。