HSQLDB

以Java為基礎的資料庫引擎

HSQLDB (Hyper SQL Database)是一個用Java編寫的關聯式資料庫管理系統。它有一個JDBC驅動程式並且支援一個SQL-92和SQL:2008標準的較大子集。[1]它提供了一個快速輕量級的資料庫引擎[2],該資料庫引擎提供基於磁碟和主記憶體的表。有兩種模式:嵌入式和伺服器模式可供使用。

HSQLDB (HyperSQL資料庫)
HSQL資料庫管理系統
HSQL資料庫管理系統
首次釋出2001年,​23年前​(2001
目前版本2.6.0(2021年3月21日,​3年前​(2021-03-21
原始碼庫 編輯維基數據鏈結
程式語言Java
作業系統跨平台
類型關聯式資料庫管理系統
授權條款BSD授權條款
網站hsqldb.org/ 編輯維基數據

此外,它包括一些工具,如輕量級web伺服器、命令列、GUI管理工具(可以作為應用程式單獨執行)和一些演示實例。可以在1.1版本以上的JRE上執行,包括免費JRE,如Kaffe。

HSQLDB 遵循BSD協定。它在許多開源軟體專案中被用作資料庫和持久引擎,如OpenOffice Base、LibreOffice Base、the Standalone Roller Demo[3]、Jitsi網路電話和視訊會議客戶端[4],還有一些商業產品,如Mathematica和InstallAnywhere(從8.0版開始)[5]

事務支援

HSQLDB 的2.0版本有三個事務控制模式。它支援讀取未提交內容和可串行化隔離級別,支援表級鎖或多版本並行控制(MVCC),或者鎖和MVCC結合。版本1.8.1只支持0級別事務隔離(未提交讀)[6]

資料儲存

HSQLDB有兩個主要的表類型,用於持久讀寫資料的儲存(即如果事務已成功提交,它能夠保證出現系統故障時資料不遺失,並保持其完整性)。

預設的主記憶體類型以SQL指令碼的形式將所有的資料更改儲存到磁碟中。在資料庫引擎啟動時,這些命令將被執行同時資料將重構到主記憶體中。雖然這種行為不適用於非常大的表,但它提供了很高的效能優勢,並且很容易除錯。

另一種表類型是快取型,它允許以降低效能為代價,儲存千百萬位元組的資料。HSQLDB引擎只載入部分資料,在事務提交時將資料同步到磁碟。然而,在更新主記憶體資料時,引擎總是會載入所有受影響的行。因此,如果不將其分成很多小任務就不可能實現大的更新[7]

其它表類型允許讀寫csv檔案訪問(例如,這些表可以參與在查詢中使用JOINs、簡化電子試算表處理)和讀寫非持久主記憶體資料儲存。

發行版本

自2001年以來,HSQLDB已經釋出了幾個版本。早期的版本是基於中斷的HypersonicSQL資料庫引擎。在2010年發行的2.0版本,幾乎所有的都是新代碼,是按照標準SQL和JDBC 4的規範編寫的[8]

2.3.2版本完全是多執行緒的,並且支援高效能2PL和MVCC(多版本並行控制)事務控制模型。參見2.3.2版本中的新特性列表。

相關連結

參考資料

  1. ^ HSQLDB SQL Syntax. hsqldb.org. [2015-05-19]. (原始內容存檔於2012-02-23). 
  2. ^ PolePosition Performance Comparison. polepos.org. [2015-05-19]. (原始內容存檔於2015-06-04). 
  3. ^ Standalone Roller Demo. rollerweblogger.org. [2015-05-19]. (原始內容存檔於2004-10-13). 
  4. ^ Jitsi build 5390 release notes. Jitsi.org. [2015-02-01]. (原始內容存檔於2015-02-02). 
  5. ^ Software using HSQLDB. hsqldb.org. [2015-05-19]. (原始內容存檔於2015-05-03). 
  6. ^ HSQLDB Documentation. hsqldb.org. [2015-05-19]. (原始內容存檔於2012-02-23). 
  7. ^ HSQLDB Documentation. hsqldb.org. [2015-05-19]. (原始內容存檔於2015-05-02). 
  8. ^ The new HSQLDB. hsqldb.org. [2015-05-19]. (原始內容存檔於2012-02-23). 

外部連結