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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM