1. 程式人生 > >H2:開源記憶體資料庫引擎

H2:開源記憶體資料庫引擎

本資源由  伯樂線上 -  劉立華 整理

H2是一個開源的記憶體資料庫。Java編寫、快速、小巧(1.5MB jar包)還提供了Web控制檯管理資料庫內容。

h2

主要功能

  • 非常快速的資料庫引擎。
  • 開源。
  • Java編寫。
  • 支援標準SQL、JDBC API。
  • 支援嵌入式模式、伺服器模式和叢集。
  • 強大的安全功能。
  • 支援PostgreSQL的ODBC驅動。
  • 多版本併發。

附加功能

  • 支援基於硬碟或記憶體資料庫和表、只讀資料庫、臨時表。
  • 支援事務(read committed),兩步提交機制(2-phase-commit)。
  • 多個連線,表級鎖。
  • 基於成本的優化、複雜查詢採用遺傳演算法、零管理。
  • 支援可滾動和可更新的結果集、大結果集、外部結果排序、函式可以返回結果集。
  • 加密的資料庫(AES)、SHA-256加密的密碼、加密功能、SSL。

SQL支援

  • 支援多schema、information schema(Support for multiple schemas, information schema)。
  • 參照完整性/使用級聯外來鍵約束、check約束。
  • 內連線和外連結、子查詢、只讀檢視和內嵌檢視。
  • 觸發器及Java函式/儲存過程。
  • 很多內建功能,包括XML和無失真壓縮。
  • 廣泛的資料型別,包括大物件(BLOB/CLOB)和陣列。
  • 佇列和自增長的列、計算列(可用於基於索引的功能)。
  • 支援ORDER BY、GROUP BY、HAVING、UNION、LIMIT、TOP。
  • 支援排序規則,包括ICU4J庫。
  • 支援使用者和角色。
  • 相容模式支援IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle、和PostgreSQL等。

安全功能

  • 包括對SQL注入問題的解決方案。
  • 使用SHA-256和鹽(SHA-256 and salt)認證使用者密碼。
  • 對於伺服器模式的連線,使用者密碼從不會以純文字格式通過網路傳輸。
  • 所有資料庫檔案(包括用於備份資料的指令碼檔案)可使用AES-128演算法加密。
  • 遠端JDBC驅動支援通過TLS的TCP/IP連線。
  • 內建的web伺服器支援通過TLS連線。
  • 密碼使用char陣列傳送到資料庫,而不是String。

其它功能和工具

  • 體積小巧(小於1.5MB),低記憶體需求。
  • 多種索引型別(b-tree、tree、hash)。
  • 支援多維索引。
  • 支援CSV檔案。
  • 支援連結串列,及一個內建的虛擬“range”表。
  • 支援EXPLAIN PLAN宣告;複雜的跟蹤選項。
  • 資料庫關閉可以延遲或者禁用以提高效能。
  • 自帶基於web的控制檯應用(已譯成多國語言)。
  • 資料庫可以生成SQL指令碼檔案。
  • 包含一個恢復工具,可以轉儲資料庫內容。
  • 支援變數(例如計算執行總和)。
  • 自動重新編譯預處理語句。
  • 使用少量資料庫檔案。
  • 為每一條記錄和日誌條目使用校驗和以保證資料完整性。
  • 經過充分測試(高覆蓋率、隨機壓力測試)。

連線模式簡介

支援以下三種模式:

  • 嵌入式模式(使用JDBC的本地連線)。
  • 伺服器模式(使用JDBC或ODBC的通過TCP/IP的遠端連線)。
  • 混合模式(本地和遠端連線同時存在)。

嵌入式模式

嵌入式模式

在嵌入式模式下,應用程式使用和JDBC相同的JVM開啟資料庫。這是最快、最簡單的連線方式。缺點是資料庫任何時候只在一個虛擬機器中開啟。同時支援持久化和在記憶體中儲存資料。沒有同時開啟資料庫的數量限制,沒有連線數限制。

伺服器模式

伺服器模式

當使用伺服器模式時(也稱作遠端模式或者客戶端/服務端模式),應用程式使用 JDBC或ODBC API以遠端方式開啟資料庫。資料庫伺服器需要在相同或者另外的虛擬機器,或者乾脆另外一臺計算機啟動。 很多應用程式可以同時通過連線到這臺伺服器連線同一個資料庫。在內部,該伺服器程序以嵌入式模式開啟多個數據庫。 由於所有資料通過TCP/IP傳輸,伺服器模式要比嵌入式模式慢一些。同時支援持久化和在記憶體中儲存資料。每臺伺服器沒有同時開啟資料庫的數量限制,沒有 連線數限制。

混合模式

混合模式

混合模式是嵌入式模式和伺服器模式的組合。第一個應用程式在嵌入式模式中連線到資料 庫,但也啟動了一個數據庫伺服器,這樣其他應用程式(執行在不同程序或虛擬機器中)可以同時訪問資料。本地連線像嵌入式模式一樣快速,遠端連線稍慢。 資料庫伺服器可以通過API,或者自動化(自動混合模式)啟停。當使用自動混合模式時,所有要連線資料庫的客戶端可使用完全相同的URL。

開發資源

官方網站:http://www.h2database.com/
開源地址:https://github.com/h2database/h2database

from:http://hao.jobbole.com/h2-2/