H2数据库介绍

常用的开源数据库:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2,HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、性能和功能的优势
 
一. H2数据库官网:http://www.h2database.com/
H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一
个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主
流的数据库,具有比较完备的数据库特性,如支client/server连接,能够支持标准的SQL语
句,支持存储过程等。因此采用H2作为开发期、测试期和演示的数据库非常方便,不太适合
作为大规模生产数据库。
二.
a. 在内存中运行(单进程访问)
数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境
连接字符串:
jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1
b. 嵌入式(单进程访问)
数据库持久化存储为单个文件
连接字符串:
jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE
~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库
c. 服务模式(多进程访问)
 web server:此种运行方式支持使用浏览器访问H2 Console
 TCP server:支持客户端/服务器端的连接方式
 PG server:支持PostgreSQL客户端
H2支持三种服务模式:
启动tcp服务连接字符串示例:
jdbc:h2:tcp://localhost/~/test 使用用户主目录
jdbc:h2:tcp://localhost//data/test 使用绝对路径
jdbc:h2:ssl://localhost:8085/~/sample
 DB_CLOSE_DELAY:要求最后一个正在连接的连接断开后,不要关闭数据库
MODE=MySQL:兼容模式,H2兼容多种数据库,该值可以为:
DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
 AUTO_RECONNECT=TRUE:连接丢失后自动重新连接
AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在
内存中运行模式
TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:输出跟踪日志到控制台或文件,
取值0为OFF,1为ERROR(默认值),2为INFO,3为DEBUG
 SET TRACE_MAX_FILE_SIZE mb:设置跟踪日志文件的大小,默认为16M
d. 连接字符串参数
e. 启动服务模式,打开H2 Console web页面
启动服务,在命令行中执行
java -cp h2*.jar org.h2.tools.Server
执行如下命令,获取选项列表及默认值
三. 运行方式
H2数据库介绍
2017年9月20日 22:39
分区 DB 的第 1 页 执行如下命令,获取选项列表及默认值
java -cp h2*.jar org.h2.tools.Server -?
 -web:启动支持H2 Console的服务
 -webPort :服务启动端口,默认为8082
 -browser:启动H2 Console web管理页面
 -tcp:使用TCP server模式启动
 -pg:使用PG server模式启动
常见的选项如下:
四. 集群(尚未经过实际测试)
H2支持两台服务器运行两个数据库成为集群,两个数据库互为备份,如果一个服务器失效,
另一个服务器仍然可以工作。另外只有服务模式支持集群配置。
a. 创建目录
创建两个服务器工作的目录
# mkdir server1
# mkdir server2
b. 启动tcp服务
执行如下命令分别在9101、9102端口启动两个使用tcp服务模式的数据库
java org.h2.tools.Server-tcp -tcpPort 9101-baseDir server1
java org.h2.tools.Server-tcp -tcpPort 9102 -baseDir server2
c. 使用CreateCluster工具创建集群
java org.h2.tools.CreateCluster
-urlSource jdbc:h2:tcp://localhost:9101/~/test
-urlTarget jdbc:h2:tcp://localhost:9102/~/test
-user sa
-serverList localhost:9101,localhost:9102
如果两个数据库不存在,该命令将会自动创建数据库。如果一个数据库失效,可以先
删除坏的数据库文件,重新启动数据库,然后重新运行CreateCluster工具
d. 连接数据库
现在可以使用如下连接字符串连接集群数据库
jdbc:h2:tcp://localhost:9101,localhost:9102/~/test
e. 监控集群运行状态
可以使用如下命令查看配置的集群服务器是否都在运行
SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME='CLUSTER'
f. 限制
H2的集群并不支持针对事务的负载均衡,所以很多操作会使两个数据库产生不一致的
结果,执行如下操作时请小心:
RANDOM_UUID(), SECURE_RAND(), SESSION_ID(), MEMORY_FREE(), MEMORY_USED(),
CSVREAD(), CSVWRITE(), RAND()
自动增长列和标识列不支持集群,当插入数据时,序列值需要手动创建
不支持SET AUTOCOMMIT FALSE语句,如果需要设置成为不自动提交,可以执行方法
Connection.setAutoCommit(false)
H2可以通过CreateCluster工具创建集群,示例步骤如下(在在一台服务器上模拟两个数据
库组成集群):
• Dataflyer 一个查看和导出数据库的工具
• DB Solo SQL 查询工具
五. 能够可视化访问和查看H2数据库的工具
分区 DB 的第 2 页 • DB Solo SQL 查询工具
• DbVisualizer 数据库工具
• Execute Query Java写的数据库工具
• Flyway Java写的敏捷迁移数据库的工具
• fleXive JavaEE5 的开源框架,可以用来做复杂的开发已经Web应用的演化。
JDBC Console 一个小型的web应用,提供了一种执行SQL的能力,基于H2的控制台界
面,同时也支持JNDI数据源。
• HenPlus 一个用Java写的SQL工具
• JDBC lint 能够在我们使用JDBC API的时候,帮助我们写出正确高效的代码
OpenOffice 是一个OpenOffice.org组织的数据库应用。其提供了进入关系数据源的
能力。
RazorSQL 一个SQL的查询工具,能够浏览数据库,进行SQL语句的编辑,数据的管
理。
• SQL Developer 通用的数据库管理前端。
• SQL Workbench/J 免费的独立的DBMS SQL的工具
SQuirreL SQL Client 图形化的工具,能够查看数据库的结构,浏览数据,执行SQL
命令
• SQuirreL DB Copy Plugin 用来把数据从一个数据库复制到另外一个数据库。
分区 DB 的第 3 页

猜你喜欢

转载自www.cnblogs.com/zhuyeshen/p/10956428.html