H2 Database是什么?
H2 Database是一個(gè)開(kāi)源的嵌入式數(shù)據(jù)庫(kù)引擎啦撮,采用java語(yǔ)言編寫,不受平臺(tái)的限制,同時(shí)H2 Database提供了一個(gè)十分方便的web控制臺(tái)用于操作和管理數(shù)據(jù)庫(kù)內(nèi)容镶骗。H2 Database還提供兼容模式,可以兼容一些主流的數(shù)據(jù)庫(kù)躲雅,因此采用H2 Database作為開(kāi)發(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)常變化但需要頻繁訪問(wèn)的數(shù)據(jù)植兰,比如字典表份帐、權(quán)限表。不過(guò)這樣系統(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)行方式支持使用瀏覽器訪問(wè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)程連接訪問(wèn)數(shù)據(jù)庫(kù)扬虚,服務(wù)器可以與應(yīng)用部署與同一臺(tái)機(jī)器,也可以部署與另一臺(tái)機(jī)器球恤。
事實(shí)上辜昵,H2 Server本身也是使用嵌入式模式來(lái)啟動(dòng)運(yùn)行H2 Database的。顯然咽斧,由于服務(wù)器模式是通過(guò)遠(yuǎn)程連接訪問(wèn)數(shù)據(jù)堪置,其性能也要低于嵌入式模式。
混合模式
該模式是嵌入式模式與混合模式的融合张惹。一個(gè)應(yīng)用啟動(dòng)嵌入式模式的H2 Database舀锨,其他應(yīng)用可以將其作為服務(wù)器模式來(lái)遠(yuǎn)程訪問(wèn)。