H2 数据库先容(1)--简介
H2 是一个使用 Java 编写的数据库,支持内存、文件等数据存储模式,可用于测试及 Demo 应用;本文主要先容其基本概念及安装。1、H2 特点
[*]速度很快、开源、JDBC API
[*]嵌入式和服务器模式;基于磁盘或内存的数据库
[*]事务支持,多版本并发
[*]基于浏览器的控制台应用程序
[*]加密数据库
[*]全文搜索
[*]纯 Java,而且体积小:约 2.5 MB 的 jar 文件
[*]ODBC 驱动程序
2、连接模式
H2 支持以下连接模式:
嵌入式模式(使用 JDBC 进行本地连接)
服务器模式(通过 TCP/IP 上的 JDBC 或 ODBC 进行远程连接)
混淆模式(同时进行本地和远程连接)
2.1、嵌入式模式(Embedded Mode)
在嵌入式模式中,应用程序使用 JDBC 从同一个 JVM 中打开数据库。这是最快速、最简单的连接模式。缺点是数据库一次只能在一个虚拟机中打开。与所有模式一样,持久化数据库和内存数据库都受支持。并发打开数据库的数目或打开连接的数目没有限定。
在嵌入式模式中,SQL 命令的 I/O 操作可以由应用程序的线程执行。应用程序不应中断这些线程,否则大概导致数据库破坏,因为 JVM 在线程中断时会关闭 I/O 句柄。可以考虑其他方法来控制应用程序的执行。当中断大概发生时,异步文件系统可以作为一种解决方法,但不能包管完全安全。建议改用客户端-服务器模子,客户端端可以中断自己的线程。
https://img2024.cnblogs.com/blog/1846282/202403/1846282-20240301161333525-332394761.png
2.2、服务器模式(Server Mode)
当使用服务器模式(有时称为远程模式或客户端/服务器模式)时,应用程序使用 JDBC 或 ODBC API 远程打开数据库。需要在同一或另一个虚拟机中启动服务器,大概在另一台盘算机上启动服务器。通过连接到该服务器,很多应用程序可以同时连接到同一个数据库。在内部,服务器进程以嵌入式模式打开数据库。
服务器模式比嵌入式模式慢,因为所有数据都通过 TCP/IP 传输。与所有模式一样,支持持久化数据库和内存数据库。每个服务器并发打开的数据库数目或打开连接的数目没有限定。
https://img2024.cnblogs.com/blog/1846282/202403/1846282-20240301162032782-62860568.png
2.3、混淆模式(Mixed Mode)
混淆模式是嵌入式模式和服务器模式的组合。在一个应用程序以嵌入式模式连接数据库,同时启动数据库服务,以便其他应用程序(在不同进程(虚拟机)中运行)可以同时访问雷同的数据。本地连接的速度与仅使用嵌入式模式的数据库一样快,而远程连接稍慢一些。
数据库可以从应用程序内部(使用数据库 API)启动和制止,也可以主动启动(主动混淆模式)。在使用主动混淆模式时,所有想要连接到数据库的客户端(无论是本地还是远程连接)都可以使用完全雷同的 URL 进行连接。
https://img2024.cnblogs.com/blog/1846282/202403/1846282-20240301164135755-640775400.png
3、H2 服务器类型
H2 支持三种服务器:Web 服务器(用于 H2 控制台)、TCP 服务器(用于客户端/服务器连接)和 PG 服务器(用于 PostgreSQL 客户端);只有 Web 服务器支持浏览器连接。这些服务器可以通过命令行和 API 的方式启动。启动服务器并不会打开数据库——数据库会在客户端连接时打开。
4、H2 数据库类型
H2 支持支持数据库和内存数据库。
4.1、持久数据库
持久数据库数据保存在文件中,嵌入式的连接 URL 为:"jdbc:h2:[]",远程连接的 URL 为:"jdbc:h2:tcp://[:]/[]"。前缀file:是可选的;如果未使用路径或只使用相对路径,则当前工作目录将被用作起点。路径和数据库名称的区分大小写取决于操作系统,但建议仅使用小写字母。数据库名称必须至少为三个字符长(File.createTempFile的限定)。
4.2、内存数据库
对于某些用例(例如:快速原型设计、测试、高性能操作、只读数据库),大概不需要持久化数据。H2 支持内存模式,此中数据不会被持久化。
某些情况下,只需要一个到内存数据库的连接。这意味着要打开的数据库是私有的。在这种情况下,数据库 URL 是 "jdbc:h2:mem:",在同一虚拟机中打开两个连接意味着打开两个不同的(私有)数据库。
有时需要多个连接到同一个内存数据库;在这种情况下,数据库 URL 必须包罗一个名称。例如:"jdbc:h2:mem:db1",使用此 URL 访问雷同的数据库仅在同一虚拟机中有用。
要从另一个进程或另一台盘算机访问内存数据库,需要在创建内存数据库的同一进程中启动一个 TCP 服务器。然后,其他进程通过 TCP/IP 或 TLS 访问数据库,使用类似于 "jdbc:h2:tcp://localhost/mem:db1" 的 URL。
默认情况下,关闭数据库的最后一个连接会关闭数据库。对于内存数据库,这意味着内容会丢失。要保持数据库处于打开状态,请在 URL 中添加”;DB_CLOSE_DELAY=-1“,如:"jdbc:h2:mem:test;DB_CLOSE_DELAY=-1";如许可在虚拟机存活期间保持内存数据库的内容。
5、数据库连接 URL
H2 数据库支持多种连接模式和连接设置,可以通过不同的数据库URL实现。URL中的设置不区分大小写。
连接方式 连接 URL 嵌入式(本地)连接
jdbc:h2:[]
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:C:/data/sample (Windows only)
内存模式(私有的)
In-memory (private)内存模式(命名的)
jdbc:h2:mem:
jdbc:h2:mem:test_mem
服务器模式(远程连接) 使用 TCP/IP
jdbc:h2:tcp://[:]/[]
jdbc:h2:tcp://localhost/~/test
jdbc:h2:tcp://dbserv:8084/~/sample
jdbc:h2:tcp://localhost/mem:test
服务器模式(远程连接) 使用 TLS
jdbc:h2:ssl://[:]/[]
jdbc:h2:ssl://localhost:8085/~/sample;
使用加密文件
jdbc:h2:;CIPHER=AES
jdbc:h2:ssl://localhost/~/test;CIPHER=AES
jdbc:h2:file:~/secure;CIPHER=AES
6、安装
6.1、服务器模式
官网(https://h2database.com/html/download.html)下载 H2 安装文件,这里下载平台无关的 Zip 安装文件;下载完成后解压并执行 bin/h2.bat 命令,该命令会启动所有三种服务器: Web 服务器(端口 8082)、TCP 服务器(端口 9092)、PG 服务器(端口 5435)。启动后会主动弹出 H2 控制台的页面:
https://img2024.cnblogs.com/blog/1846282/202403/1846282-20240304170203099-796091347.png
6.2、嵌入式或混淆模式
引入相关依赖即可:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.224</version>
</dependency>
参考:
https://h2database.com/html/main.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]