H2数据库
H2数据库是Thomas Mueller提供的一个开源的、纯java实现(内存级别)的关系数据库,因为它支持在内存中创建数据库和表。
1.H2数据库的主要特性:
- 免费、开源、快速
- 嵌入式的数据库服务器,支持集群
- 提供 JDBC、ODBC 访问接口,提供基于浏览器的控制台管理程序
- Java 编写,可使用 GCJ 和 IKVM.NET 编译且不受平台的限制
- 短小精干的软件,1M 左右
2.H2数据库的应用:
- 可以同应用程序打包在一起发布,可以非常方便地存储少量结构化数据
- 单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态
- 是作为缓存,即当做内存数据库,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表
3.H2数据库的运行模式:
-
内嵌模式(Embedded Mode)
内嵌模式下,应用和数据库同在一个JVM中,通过JDBC进行连接。可持久化,但同时只能一个客户端连接。内嵌模式性能会比较好。对并发打开数据库的数量或打开连接的数量没有限制。
-
服务器模式(Server Mode)
使用 JDBC 或 ODBC 在 TCP/IP 上的远程连接,使用服务器模式和内嵌模式一样,只不过它可以跑在另一个进程里。服务器模式比内嵌模式慢因为所有数据都通过TCP/IP传输。
-
混合模式
混合模式是内嵌模式和服务模式的组合。第一个应用通过内嵌模式与数据库建立连接,同时也作为一个服务器启动,于是另外的应用(运行在不同的进程或是虚拟机上)可以同时访问同样的数据。第一个应用程序的本地连接与嵌入式模式的性能一样快,而其他连接理论上个的都会略慢。
服务器可以从应用程序内(使用服务器API)启或停止,或自动(自动混合模式)。当使用自动混合模式时,所有想要连接到数据库的客户端(无论是本地连接还是远程连接)都可以使用完全相同的数据库URL来实现。
4.H2数据库的连接
- 以嵌入式(本地)连接方式连接H2数据库:
这种连接方式默认情况下只允许有一个客户端连接到H2数据库。当有客户端连接到H2数据库之后,此时数据库文件就会被锁定,那么其他客户端就无法再连接了。
连接语法:
jdbc:h2:[file:][]
例如:
//连接位于用户目录下的test数据库
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:E:/H2/gacl(Windows only)
- 使用TCP/IP的服务器模式(远程连接)方式连接H2数据库(推荐):
这种连接方式和其他数据库连接方式类似,是基于Service的形式进行连接的,因此允许多个客户端同时连接到H2数据库。
连接语法:
jdbc:h2:tcp://[:]/[]
范例:
jdbc:h2:tcp://localhost/~/test