首页 > 数据库 >H2 数据库介绍(1)--简介

H2 数据库介绍(1)--简介

时间:2024-05-12 10:31:07浏览次数:22  
标签:jdbc H2 简介 数据库 h2 -- 模式 服务器 连接

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 句柄。可以考虑其他方法来控制应用程序的执行。当中断可能发生时,异步文件系统可以作为一种解决方法,但不能保证完全安全。建议改用客户端-服务器模型,客户端端可以中断自己的线程。

2.2、服务器模式(Server Mode)

当使用服务器模式(有时称为远程模式或客户端/服务器模式)时,应用程序使用 JDBC 或 ODBC API 远程打开数据库。需要在同一或另一个虚拟机中启动服务器,或者在另一台计算机上启动服务器。通过连接到该服务器,许多应用程序可以同时连接到同一个数据库。在内部,服务器进程以嵌入式模式打开数据库。
服务器模式比嵌入式模式慢,因为所有数据都通过 TCP/IP 传输。与所有模式一样,支持持久化数据库和内存数据库。每个服务器并发打开的数据库数量或打开连接的数量没有限制。

2.3、混合模式(Mixed Mode)

混合模式是嵌入式模式和服务器模式的组合。在一个应用程序以嵌入式模式连接数据库,同时启动数据库服务,以便其他应用程序(在不同进程(虚拟机)中运行)可以同时访问相同的数据。本地连接的速度与仅使用嵌入式模式的数据库一样快,而远程连接稍慢一些。
数据库可以从应用程序内部(使用数据库 API)启动和停止,也可以自动启动(自动混合模式)。在使用自动混合模式时,所有想要连接到数据库的客户端(无论是本地还是远程连接)都可以使用完全相同的 URL 进行连接。

3、H2 服务器类型

H2 支持三种服务器:Web 服务器(用于 H2 控制台)、TCP 服务器(用于客户端/服务器连接)和 PG 服务器(用于 PostgreSQL 客户端);只有 Web 服务器支持浏览器连接。这些服务器可以通过命令行和 API 的方式启动。启动服务器并不会打开数据库——数据库会在客户端连接时打开。

4、H2 数据库类型

H2 支持支持数据库和内存数据库。

4.1、持久数据库

持久数据库数据保存在文件中,嵌入式的连接 URL 为:"jdbc:h2:[file:][<path>]<databaseName>",远程连接的 URL 为:"jdbc:h2:tcp://<server>[:<port>]/[file:][<path>]<databaseName>"。前缀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 

嵌入式(本地)连接
[Embedded (local) connection)]

jdbc:h2:[file:][<path>]<databaseName>
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:C:/data/sample (Windows only)

内存模式(私有的)
[In-memory (private)]

 In-memory (private)

内存模式(命名的)
[In-memory (named)]

jdbc:h2:mem:<databaseName>
jdbc:h2:mem:test_mem

服务器模式(远程连接) 使用 TCP/IP
[Server mode (remote connections) using TCP/IP]

jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
jdbc:h2:tcp://localhost/~/test
jdbc:h2:tcp://dbserv:8084/~/sample
jdbc:h2:tcp://localhost/mem:test

服务器模式(远程连接) 使用 TLS
[Server mode (remote connections) using TLS]

jdbc:h2:ssl://<server>[:<port>]/[<path>]<databaseName>
jdbc:h2:ssl://localhost:8085/~/sample;

使用加密文件
[Using encrypted files]

jdbc:h2:<url>;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 控制台的页面:

6.2、嵌入式或混合模式

引入相关依赖即可:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.2.224</version>
</dependency>

 

 

参考:
https://h2database.com/html/main.html

 

标签:jdbc,H2,简介,数据库,h2,--,模式,服务器,连接
From: https://www.cnblogs.com/wuyongyin/p/18043105

相关文章

  • 使用 Playwright 控制浏览器的启动、停止和等待
    简介Playwright是一个强大的自动化测试工具,它不仅可以模拟用户在浏览器中的行为,还能够灵活控制浏览器的启动、停止和等待操作。在本文中,我们将探讨如何使用Playwright进行这些操作。启动停止浏览器我们之前是使用with方法来控制浏览器启动和停止,现在我们来介绍一下使用star......
  • 使用 Playwright 进行元素定位
    前言在自动化测试和网页爬取中,定位页面元素是一项重要的任务。Playwright提供了多种方式来定位页面元素,包括通过CSS选择器、XPath和文本内容等。在本文中,我们将介绍如何使用Playwright进行元素定位。CSS选择器定位元素使用CSS选择器是一种常见且灵活的方式来定位页面......
  • playwright使用:启动浏览器与多种运行方式
    前言在本文中,我们将介绍如何使用Playwright这一现代化的浏览器自动化工具来启动浏览器,并深入了解其运行方式。Playwright是一个功能强大的工具,可以帮助开发人员自动化测试、网页截图、信息提取等任务。它支持多种浏览器,包括Chrome、Firefox和WebKit。启动浏览器上一篇文章中,我......
  • 071、洛阳女儿行
    071、洛阳女儿行唐●王维洛阳女儿对门居,才可颜容十五余。良人玉勒乘骢马,侍女金盘脍鲤鱼。画阁珠楼尽相望,红桃绿柳垂檐向。罗帏送上七香车,宝扇迎归九华帐。狂夫富贵在青春,意气骄奢剧季伦。自怜碧玉亲教舞,不惜珊瑚持与人。春窗曙灭九微火,九微片片飞花璅。戏罢曾无理曲时,妆......
  • git
    安装https://git-scm.com/downloadsgitgitee和gitlabGit:是一种版本控制软件,是一个命令,是一种工具。-----GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台--》git的远程仓库Gitee:(码云)......
  • 如何同时或者按顺序间隔启动多个程序
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z1、打开工具,切换到定时器模块,快捷键:Ctrl+3 2、新建一个定时器,我这里演示同时打开多个程序(比如同时启动多个QQ,或者多个微信等),那就把单次数量提高,如果想每次执行这个定时器里面的3个事件,那单次数量就是写3,我......
  • Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
    前言web自动化测试是我们工作中的重要一环,随着Web应用程序和网站的复杂性不断增加,跨浏览器测试变得越来越必要。而Playwright作为一种新兴的跨浏览器测试工具,为开发人员提供了一种轻松愉快的方式来进行自动化测试。本文将带您深入探索Playwright的安装过程,并结合Python语言,揭示......
  • PLY文件格式及cpp解析
    PLY(PolygonFileFormat,多边形文件格式)文件用于存储GeometryObjectData(包括vertices,faceandotherelement顶点/面片/其它属性)文件格式:HeaderVertexListFaceList(listsofotherelements)Header:以ply开始,以end_header结束第二行format指定是文本格式(A......
  • webgl和canvas的区别
    webgl和canvas的区别WebGL和Canvas的主要区别在于它们的渲染方式、功能复杂性、以及编程难度。12渲染方式:Canvas使用2D渲染上下文来绘制图形和图像,基于像素的绘图系统,通过JavaScript脚本控制渲染过程。而WebGL(WebGraphicsLibrary)是基于OpenGLES标......
  • sql学习:终于把sql case语句使用讲明白了,一看就懂
    作者|幸福it民工来源|今日头条在数据库查询分析中,经常遇到case条件判断,总结出来供大家参考,下面通过两个实例给大家讲解。case用途介绍:CASE是多条件分支语句,相比IF…ELSE语句,CASE语句进行分支流程控制可以使代码更加晰,易于理解。CASE语句也根据表达式逻辑值的真假来决定执......