资讯专栏INFORMATION COLUMN

h2指南

PiscesYE / 753人阅读

摘要:和第一点类似,利用数据的嵌入式的特点,在单元测试种使用该数据库将大大的降低配置成本。如果在连接数据库时,发现没有该数据库,其会自动新建数据库文件。该模式的运行效率是最高的。另外只有确保导出目标是空的才能顺利导入,否则会有冲突。

为什么是h2

方便开发 h2数据库可以作为一个嵌入式的数据库使用,在开发环境种使用非常方便。不像mysql等数据库需要专门启动一个数据库服务,并做相关配置。可以大大减少开发时的环境配置成本。

方便测试 h2数据库可以作为单元测试种使用的数据库。和第一点类似,利用h2数据的嵌入式的特点,在单元测试种使用该数据库将大大的降低配置成本。

方便部署 即使是在生产环境中,我也非常非常推荐使用h2。因为该数据库真的是非常的轻便,非常有利于程序的发布。过去如果使用mysql这种数据库,在发布前还需要先将mysql服务器开启,并建立相关db。而使用h2,你几乎可以完全忽略这些过程。程序发布的过程,你只需要集中在将程序运行起来即可。

性能不错 h2在一定程度上,性能完全不弱于mysql。如果你的程序的用户不超过1w,那么我觉得h2在性能上完全可以和mysql媲美。至于更大的数据量和用户数是否能够满足需求,我也不知道。对于初创产品而言,我觉得h2在性能上绝对已经满足开发者的需求了。

只需要很少的资源 目前如果在要服务器上运行起mysql服务,那么内存就会占据约500mb。如果你的服务器只有1g的内存,那么随着程序运行,mysql会占据更多的资源,接着就会导致资源不够使用,mysql服务被关闭。而使用h2就完成没有这样的问题。h2占据的资源非常的少,几乎不会被你察觉。

快速开始

h2和mysql很大的一个区别是,你不需要在连接数据库之前创建数据库。如果在连接数据库时,h2发现没有该数据库,其会自动新建数据库文件。因此最快体验h2的方法,就是直接去连接一个h2数据库就可以了。下面举个用h2 shell连接数据库的例子。

step1

运行如下命令java -cp h2*.jar org.h2.tools.Shell,h2*.jar文件是h2的运行文件,你可以在官网上下载到。

step2

根据提示输入URL:jdbc:h2:mem:test

step3

根据提示输入Driver:org.h2.Driver

step4

根据提示输入User:root

step5

根据提示输入Password:123456

step last

这个时候你已经成功的连接到了数据库,并可以通过SQL语句对数据库进行操作了。在上面的步骤当中,你连接到了内存当中的test数据库,虽然他开始不存在,但是h2自动帮你新建了该数据库。除了在内存种存储数据库文件外,你也可以在文件中存储数据库,你只需要把URL改成jdbc:h2:~/test,其便会连接~/test路径对应的数据库。

什么是h2 web console

h2 web console是一个GUI的数据库管理工具,通过他你可以很方便的管理你的数据库。他的作用就相当于PhpMyAdmin。我一般会在开发环境开启h2 web console。当然应用没有后台管理这样的工具的话,我也会在生产环境开启h2 web console

启动h2 web console

运行java -cp h2*.jar org.h2.tools.Console命令变可启动h2 web console。运行该命令后,在结果输出种可以看到h2 web console的访问地址。h2*.jar文件是h2的运行文件,你可以在官网上下载到。

远程访问 h2 web console

h2 web console默认是只能在本地访问的。也就是说如果你在远程服务器上开启了h2 web console那么你是没有办法在自己的电脑上访问h2 web console的。为了能在远程访问h2 web console,就需要开启h2 web console的远程访问功能。

运行如下命令 java -cp h2*.jar org.h2.tools.Console -webAllowOthers。使用该命令打开的h2 web console就可以在远程访问。h2*.jar文件是h2的运行文件,你可以在官网上下载到。

h2 shell模式

h2的shell模式,你可以理解为是h2的命令行。你在该模式下可以通过各种命令行和SQL语句对数据库进行操作。

运行如下命令java -cp h2*.jar org.h2.tools.Shell,便打开了h2的shell模式。运行该命令后你还需要根据提示输入DRIVER CLASSURLUSER NAMEPASSWORDh2*.jar文件是h2的运行文件,你可以在官网上下载到。

h2的连接模式

h2有三种运行模式,分别是Embedded ModeServer ModeMixed Mode

Embedded Mode

嵌入模式:在该模式下,程序会直接连接数据库,访问数据库文件。该模式的运行效率是最高的。

特点:该模式虽然效率最高,但是在该模式下数据库将只有当前程序可以访问,其他程序是不能访问数据库的。

URL:jdbc:h2:~/test

URL: jdbc:h2:mem:test 在内存种运行

Server Mode

服务模式。在该模式下,数据库将会运行在一个数据库连接服务上。程序通过访问数据库连接服务访问数据库。

特点:该模式的性能不如嵌入模式,但是他可以支持多个程序访问数据库。

URL:jdbc:h2:tcp://localhost/~/tes

URL:jdbc:h2:ssl://localhost:8085/~/sample;

Mixed Mode

混合模式:该模式,集合了嵌入模式和服务模式的优点。他使得数据库性能和嵌入模式一样,同时又支出多个程序一同连接。

背后实现:如果你是第一个连接该数据库的程序,那么你相当于是用嵌入模式连接数据库。如果你是第二个或者之后连接的数据库,那么你就相当于是用服务模式连接的数据库。

URL:jdbc:h2:~/test;AUTO_SERVER=TRUE

h2 数据库备份

方法一: 在h2 shell模式下运行backup to "~/backup.zip",其中~/backup.zip是备份的地址。该命令会备份一个完整的数据库。

方法二: 在数据库文件目录下运行java -cp h2*.jar org.h2.tools.Backup -file ~/backup.zip~/backup.zip是备份的地址。该命令会备份一个完整的数据库。但是该方法不能在数据库被连接时时运行。

h2 数据库还原

在数据库文件目录下运行java -cp h2*.jar org.h2.tools.Restore -file ~/backup.zip~/backup.zip是备份的地址。该命令会还原一个完整的数据库。但是该方法不能在数据库被连接时时运行。

以SQL的形式导出h2数据库

方法一: 在h2 shell 模式下运行script to "~/backup.sql",其中~/backup.sql是备份的地址。

方法二: 在数据库文件目录下运行java -cp h2*.jar org.h2.tools.Script -url jdbc:h2:~/test -user root -password 123456 -script ~/backup.sqljdbc:h2:~/test是数据库地址,root是用户名,1123456是秘密,~/backup.sql是保存sql的地址。该方法数据库不能被使用时运行。

以SQL的形式还原h2数据库

方法一: 在h2 shell 模式下运行runscript from "~/backup.sql",其中~/backup.sql是备份的地址。并且只有确保导出目标db是空的才能顺利导入,否则会有冲突。 解决方案是在运行该方法前运行drop all objects

方法二: 在数据库文件目录下运行java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -user root -password 123456 -script ~/backup.sqljdbc:h2:~/test是数据库地址,root是用户名,1123456是秘密,~/backup.sql是保存sql的地址。但是该方法不能在数据库被连接时时运行。另外只有确保导出目标db是空的才能顺利导入,否则会有冲突。

位运算

在mysql当中,如果sql语句中需要位运算,可以直接使用&|这些符号。但是在h2中需要使用sql函数才能实现。具体可以参考Functions文档。

参考链接

官网
Starting and Using the H2 Console
Settings of the H2 Console
Creating New Databases
Using Databases in Web Applications
Upgrade, Backup, and Restore
Command Line Tools
The Shell Tool
Database URL Overview
Functions

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66068.html

相关文章

  • spring boot集成h2指南

    摘要:依赖添加依赖文件。会自动帮你完成的注入,之后无论你是用还是,或者别的框架就随你了。进行该配置后,每次启动程序,程序都会运行文件,对数据库的数据操作。否则只能在本机访问。,进行该配置,程序开启时就会启动。 依赖 添加依赖文件。如果你使用的是gradle,则可以在build.gradle文件种加入下面代码 dependencies { compile com.h2database:...

    senntyou 评论0 收藏0
  • spring boot集成h2指南

    摘要:依赖添加依赖文件。会自动帮你完成的注入,之后无论你是用还是,或者别的框架就随你了。进行该配置后,每次启动程序,程序都会运行文件,对数据库的数据操作。否则只能在本机访问。,进行该配置,程序开启时就会启动。 依赖 添加依赖文件。如果你使用的是gradle,则可以在build.gradle文件种加入下面代码 dependencies { compile com.h2database:...

    qqlcbb 评论0 收藏0
  • h2指南

    摘要:和第一点类似,利用数据的嵌入式的特点,在单元测试种使用该数据库将大大的降低配置成本。如果在连接数据库时,发现没有该数据库,其会自动新建数据库文件。该模式的运行效率是最高的。另外只有确保导出目标是空的才能顺利导入,否则会有冲突。 为什么是h2 方便开发 h2数据库可以作为一个嵌入式的数据库使用,在开发环境种使用非常方便。不像mysql等数据库需要专门启动一个数据库服务,并做相关配置。可...

    Amos 评论0 收藏0

发表评论

0条评论

PiscesYE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<