介绍
H2数据库是一个开源的关系型数据库管理系统(RDBMS),它完全用Java编写,这使得H2可以在任何支持Java的平台上运行,且不受平台限制。H2数据库以其轻量级、高性能和灵活性著称,尤其适用于嵌入式环境和小型应用程序,同时也适合于单元测试和开发阶段。
主要特点和功能:
-
嵌入式与服务器模式:H2既可以直接嵌入到Java应用程序中,也可以作为独立的数据库服务器运行,提供多用户同时访问的能力。
-
多种运行模式:
-
嵌入式内存模式:数据仅保存在内存中,重启后数据丢失,适用于不需要持久化的场景,如缓存或临时数据存储。
-
嵌入式文件模式:数据库存储在本地文件系统中,适合单进程内的数据存储。
-
服务器模式:运行独立的数据库服务器进程,允许远程客户端通过TCP/IP连接访问数据库。
-
混合模式:混合模式是嵌入式模式和服务器模式的组合。 连接到数据库的第一个应用程序在嵌入模式下执行此操作,但也启动 一个服务器,以便其他应用程序(在不同的进程或虚拟机中运行)可以 并发访问相同的数据。
-
-
兼容性与API支持:H2支持标准的SQL语法和JDBC API,还可以通过模拟模式兼容PostgreSQL的ODBC驱动程序。
-
事务处理与并发控制:H2提供了事务支持,包括ACID属性,表级锁定机制以及对两阶段提交的支持。
-
安全性:支持AES加密数据库文件、SHA-256密码加密以及SSL加密通信,确保数据的安全传输和存储。
-
性能优化:采用基于成本的优化器来提高查询性能,部分复杂查询利用遗传算法进行优化。
-
轻量级Web控制台:H2包含一个内置的Web控制台工具,可通过浏览器界面管理和监控数据库。
-
应用场景:
- 应用程序内嵌数据存储。
- 快速单元测试。
- 作为NoSQL缓存,存储关系型且不经常改变的数据。
- 开发和原型设计阶段的临时数据库替代品。
-
附加特性:支持只读数据库、临时表、可滚动和可更新的结果集、大结果集处理、外部结果排序等高级数据库功能。
数据类型
H2数据库支持一系列广泛的数据类型,以下是H2数据库实际支持的数据类型概览:
-
CHAR
或CHARACTER(n)
:定长字符类型,最大长度由n指定。允许的长度为 1 到 1,000,000,000 个字符。如果未指定长度,则默认使用 1 个字符。使用此数据类型时,整个文本将保留在内存中。太短的字符串会用空格字符右填充。太长的字符串会被规范截断,并被列赋值拒绝。
示例:CHARACTER CHAR(10)
-
VARCH