h2 mysql oracle_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 页


版权声明:本文为weixin_30316287原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。