H2 功能特点
Posted boonya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了H2 功能特点相关的知识,希望对你有一定的参考价值。
目录
使用中的功能列表
H2
连接模式
数据库 URL 概述
连接到嵌入式(本地)数据库
内存数据库
数据库文件 加密
数据库文件锁定
仅当数据库已经存在时才打开
关闭数据库
忽略未知设置
打开连接时更改其他设置
自定义文件访问模式
多连接
数据库文件布局
日志记录和恢复
兼容性
自动重新连接
自动混合模式
页面大小
使用跟踪选项
使用其他日志记录 API
只读
数据库 Zip 或 Jar 文件中的只读数据库
生成的列(计算列)/基于函数的索引
多维索引
用户定义的函数和存储过程
可插拔或用户定义的表
触发器
压缩数据库
缓存设置
外部身份验证(实验性)
主要特点
- 非常快的数据库引擎
- 开源
- 用 Java 编写
- 支持标准 SQL、JDBC API
- 嵌入式和服务器模式,集群支持
- 强大的安全功能
- 可以使用 PostgreSQL ODBC 驱动程序
- 多版本并发
附加的功能
- 基于磁盘或内存中的数据库和表、只读数据库支持、临时表
- 事务支持(未提交读、已提交读、可重复读、快照)、2-phase-commit
- 多连接,行级锁定
- 基于成本的优化器,使用遗传算法进行复杂查询,零管理
- 可滚动和可更新的结果集支持,大型结果集,外部结果排序,函数可以返回一个结果集
- 加密数据库 (AES)、SHA-256 密码加密、加密功能、SSL
SQL 支持
- 支持多种模式,信息模式
- 具有级联的参照完整性/外键约束,检查约束
- 内连接和外连接、子查询、只读视图和内联视图
- 触发器和 Java 函数/存储过程
- 许多内置功能,包括 XML 和无损数据压缩
- 广泛的数据类型,包括大对象 (BLOB/CLOB) 和数组
- 序列和标识列,生成的列(可用于基于函数的索引)
- ORDER BY、GROUP BY、HAVING、UNION、OFFSET / FETCH(包括 PERCENT 和 WITH TIES)、LIMIT、TOP、DISTINCT / DISTINCT ON (...)
- 窗口函数
- 整理支持,包括对 ICU4J 库的支持
- 支持用户和角色
- IBM DB2、Apache Derby、HSQLDB、MS SQL Server、mysql、Oracle 和 PostgreSQL 的兼容模式。
安全功能
- 包括 SQL 注入问题的解决方案
- 用户密码认证使用 SHA-256 和 salt
- 对于服务器模式连接,用户密码永远不会通过网络以纯文本形式传输(即使使用不安全的连接;这仅适用于 TCP 服务器,而不适用于 H2 控制台;如果您将密码设置为数据库 URL)
- 所有数据库文件(包括可用于备份数据的脚本文件)都可以使用 AES-128 加密算法进行加密
- 远程 JDBC 驱动程序支持基于 TLS 的 TCP/IP 连接
- 内置 Web 服务器支持通过 TLS 的连接
- 可以使用字符数组而不是字符串将密码发送到数据库
其他功能和工具
- 占用空间小(约 2.5 MB),内存要求低
- 多种索引类型(b-tree、tree、hash)
- 支持多维索引
- CSV(逗号分隔值)文件支持
- 支持链接表和内置的虚拟“范围”表
- 支持该
EXPLAIN PLAN
说法;复杂的跟踪选项 - 可以延迟或禁用数据库关闭以提高性能
- 具有自动完成功能的基于 Web 的控制台应用程序(翻译成多种语言)
- 数据库可以生成SQL脚本文件
- 包含一个可以转储数据库内容的恢复工具
- 支持变量(例如计算运行总计)
- 自动重新编译准备好的语句
- 使用少量数据库文件
- 对每条记录和日志条目使用校验和以确保数据完整性
- 经过良好测试(高代码覆盖率,随机压力测试)
使用中的 H2
有关与 H2 一起使用或使用 H2 的应用程序列表,请参阅: 链接。
连接方式
支持以下连接模式:
- 嵌入式模式(使用 JDBC 的本地连接)
- 服务器模式(通过 TCP/IP 使用 JDBC 或 ODBC 进行远程连接)
- 混合模式(本地和远程同时连接)
嵌入式模式
在嵌入式模式下,应用程序使用 JDBC 从同一 JVM 中打开数据库。这是最快和最简单的连接模式。缺点是一个数据库在任何时候都只能在一个虚拟机(和类加载器)中打开。与所有模式一样,支持持久性和内存数据库。对同时打开的数据库数或打开的连接数没有限制。
在嵌入式模式下,I/O 操作可以由执行 SQL 命令的应用程序线程执行。应用程序可能不会中断这些线程,它可能导致数据库损坏,因为 JVM 在线程中断期间关闭了 I/O 句柄。考虑控制应用程序执行的其他方法。当可能发生中断时,可以使用async: 文件系统作为解决方法,但不能保证完全安全。建议改用客户端-服务器模式,客户端可能会中断自己的线程。
服务器模式
使用服务器模式(有时称为远程模式或客户端/服务器模式)时,应用程序使用 JDBC 或 ODBC API 远程打开数据库。需要在同一台或另一台虚拟机或另一台计算机上启动服务器。通过连接到该服务器,许多应用程序可以同时连接到同一个数据库。在内部,服务器进程以嵌入模式打开数据库。
服务器模式比嵌入式模式慢,因为所有数据都通过 TCP/IP 传输。与所有模式一样,支持持久性和内存数据库。每个服务器同时打开的数据库数量或打开的连接数没有限制。
混合模式
混合模式是嵌入式模式和服务器模式的结合。第一个连接到数据库的应用程序在嵌入式模式下执行此操作,但也会启动服务器,以便其他应用程序(在不同进程或虚拟机中运行)可以同时访问相同的数据。本地连接与仅在嵌入式模式下使用数据库一样快,而远程连接则稍慢一些。
服务器可以在应用程序内启动和停止(使用服务器 API),也可以自动启动和停止(自动混合模式)。使用自动混合模式时,所有想要连接到数据库的客户端(无论是本地连接还是远程连接)都可以使用完全相同的数据库 URL 进行连接。
以上是关于H2 功能特点的主要内容,如果未能解决你的问题,请参考以下文章