一、什么是内存数据库(认识内存数据库)
在了解h2db之前,我们先了解一下内存数据库。见名知其意,内存数据库就是将数据存储到内存中的数据库,与此不同的是传统数据库将数据存储到磁盘中,因此内存数据库的最大优势就是读写速度极快,一般是传统数据库的10-1000倍。正是由于对数据的存储和操作都是直接在内存中进行的,所以断电后数据将会丢失;内存数据库主要用作数据缓存和内存计算,而不能解决数据持久化存储的问题。目前主流的内存数据库主要有以下三类:
-
关系型内存数据库:作为传统数据库应用层数据的缓存,支持sql语句访问数据库中的数据,提供有限的事务保证,例如h2db;
-
键值对内存数据库:键值对存储结果,按key进行读取,value支持各种数据类型,比如redis;
-
传统数据库的内核引擎:在数据库层面提供了数据库引擎机制,最大程度减少磁盘IO;支持事务和数据持久化保证,但对数据类型有限制,例如:MySQL Memory Engine;
二、认识h2db
h2db是纯Java编写的内存数据库,是一个开源项目,其源码都打包在jar文件中,目前稳定的最新版本h2-1.4.196.jar也只有1.8M左右。h2db 有两种工作方式:嵌入式模式和服务器模式。
-
嵌入式运行模式:数据库作为整个应用的一部分,数据库server和应用运行在一个进程中;应用结束时,h2db server也会关闭。
-
服务器运行模式:数据库server运行在独立的进程中,应用通过连接和数据库server建立联系。该模式下又有三种连接方式,分别是web server模式、TCP server模式,PG server模式(PostgreSQL clients),在启动h2db服务时通过参数指定工作模式。
java -cp h2*.jar org.h2.tools.Server -tcp //启动一个tcp服务,另外两种模式为-web,-pg。
-
- -web模式启动后,可以通过浏览器连接H2 console控制台,这样就能使用浏览器来管理数据库,非常方便,默认监听端口为8082,可以通过参数(-webPort <port>)指定端口,数据库运行后,在浏览器中输入地址 localhost:8082连接到数据库。
- -pg模式启动后,可以使用PostgreSQL clients连接到数据库进行管理。
- -tcp模式启动后,应用可以通过jdbc或odbc相关接口连接到数据库。是最常用的方式。