欢迎光临
我们一直在努力

Java学习:HSQLDB文档(一)-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

近来研究hsqldb,就尝试翻译了一下它的文档,这里贴出来和大家共享,欢迎大家和我交流:wwccff@163.net

  

一 什么是hsqldb?

  

  hsqldb具有以下特点:

  

  是一个开放源代码的java数据库

  

  具有标准的sql语法和java接口

  

  hsqldb可以自由使用和分发

  

  非常简洁和快速的

  

  具有内存数据库,独立数据库和c/s数据库三种方式

  

  可是在applet中使用

  

  更多的细节:

  

  索引可以被创建和自动使用

  

  支持事务处理

  

  允许表关联

  

  完整性引用和约束

  

  支持java存储过程和函数

  

  数据库可以生成sql脚本

  

  使用用户名,密码,访问权限等安全机制

  

  可以被java1.1和java2编译

  

  建立在hypersonicsql基础上的hsqldb,是一个通用目的的数据库,非常的小,而且易于安装和使用。可以用于applets中 ,测试中,应用系统中。

  由于提供了标准sql和jdbc接口,hsqldb可以方便的和其他数据库之间进行数据转换。

  

  hsqldb的当前最新版本是1.7.1,以压缩包的形式提供,包括可以使用的jar文件,文档,源代码,测试程序,例子等。

  

  二 操作模式介绍

  hsqldb有两种操作模式:

  

  进程内模式(只用在同一个jvm里的应用程序才可以访问数据库)

  

  c/s模式(多个计算机/系统可以访问同一个数据库)

  

  进程内访问模式

进程内访问模式也就是独立模式。这里的独立模式是相对于c/s模式(客户端程序访问数据库服务器)而言的。这里,数据库和应用程序运行在同一个jvm下。这个时候的数据库实际上就是相当于被应用程序调用的代码库。程序和数据库通过通用的jdbc调用进行通讯,但是这种调用是内部调用,不需要通过网络通讯。

  

  在这个模式下,同一时间一个数据库只能有一个应用程序访问,否则,就要使用c/s模式(允许多个jvm或者计算机在同一时间访问同一个数据库)。

  

  这种模式下的jdbc的url如下:

  

  jdbc:hsqldb:test

  

  这里,test是数据库文件名。另一个例子(windows系统下):

  

  jdbc:hsqldb:c:db est

  

  c/s访问模式

  

  这种模式下数据库和应用程序不是运行在同一个jvm进程下,而是有自己独立的进程或者是独立的机器。 不需要客户端程序进入服务器的文件系统。这种模式下的数据库操作模式和一些大的数据库(比如sql server,oracle等)没什么区别的。可以在internet或者intranet。

  

  hsqldb除了有自己的访问协议,还支持标准的http协议,从而可以穿越防火墙或者代理服务器来访问数据库。

  

  in all server modes the actual database file name is specified in the java command that starts the server. this can be the dot "." for all-in-memory operation or the path for the database name

  

  服务器模式一共有三种:server,webserver和servlet。

  

  server

  

  这种模式下的通讯协议是建立在tcp/ip基础上的hsql专有协议。每个客户端都有一个独立的连接。这种模式的响应速度是非常快的,如果使用c/s模式,应该更多的采用这种服务模式。

  

  这种模式下的jdbc url是:

  

  jdbc:hsqldb:hsql://hsqldbsrv

  

  这里,hsqldbsrv是机器名称。如果一台机器上跑多个服务器,需要指定端口,例如:jdbc:hsqldb:hsql://hsqldbsrv:9002,如果是本地计算机,则使用localhost:jdbc:hsqldb:hsql://localhost。

  

  webserver

  

  有些时候,由于防火墙或者代理服务器的存在,需要使用http协议进行通讯,系统提供一个小而简单的webserver用来相应针对数据库的查询,例如:

  

  jdbc:hsqldb:http://websrv

  

  servlet

  

  这种模式和webserver模式很类似,数据库运行在一个servlet里,而servlet可以运行在几乎所有的webserver里。而且和java servlete api兼容(测试环境是j2dk2.1)。这是通过网络直接访问的。如果你的servlet不能直接访问这个数据库,就不要使用这种模式。

全内存访问(all-in-memory)模式

  

  所谓全内存访问模式,就是所有的数据(包括索引和记录)都保存在主内存里。这意味着数据库的大小是受到内存大小的限制的(不能超过内存的大小)。支持这种模式的原因是:

  

  在非日志模式下,这种模式稍微快些

  

  可以在applet下使用

  

  用来存储临时数据(应用系统的数据缓存)all-in-memory

  

  jdbc url如下:

  

  jdbc:hsqldb:.

  

  内存和硬盘结合访问模式

  

  在这种模式下,数据库的改变会写入到硬盘中,这就意味着在数据库启动时,内存里的表会根据他们的数据重新创建。或者说,可以创建表来保存数据,在访问数据库时,只有少量记录时保存在内存里的。可以在创建的时候使用´create cached table´来代替´create table´。从而支持大表(这些表的记录相对于内存来说太大了)。被缓存的表的索引也可以保存到硬盘中。因此,数据库的大小就可以不受到内存大小的限制。进入缓存表要比从内存表里获取数据要慢些。从1.7.0版本开始,支持第三种模式:数据可以存储在文本文件(如csv格式的文件)中。对应的语句时:´create text table´。

  

  在关闭数据库前,当前状态会被保存到磁盘中。缓存表中的数据会被保存到一个单独的文件中。启动hsqldb时,数据库从磁盘中载入数据(sql脚本被执行),如果数据库被毁坏(比如使用ctrl+c或者断电),数据也不会丢失。这是因为当下次数据库重新启动时,它使用脚本恢复到最近一次(有脚本文件的那次)的状态。

  

  混合绑定模式

  

  所有的模式都可以在一个程序里使用,系统可以在统一时间使用这四种模式,去连接四种不同的数据库,例如:

  

  c1=drivermanager.getconnection("jdbc:hsqldb:.","sa","");

  c2=drivermanager.getconnection("jdbc:hsqldb:test","sa","");

  c3=drivermanager.getconnection("jdbc:hsqldb:http://dbserver","sa","");

  c4=drivermanager.getconnection("jdbc:hsqldb:hsql://dbserver","sa","");

  

  在这个例子中,四个连接被打开:

  

  c1是内存数据库;c2打开的是本地数据库test;c3使用http协议连接dbserver数据库;c4也是连接dbserver机器,但是使用的是更快的hsql协议。这里的限制就是:只有一个进程内的全内存进程是可用的。

比较

  

  每种模式或配置都有不同的细节和好坏两个方面:

  

  事务处理

  

  对于webserver和servlet模式而言,由于http协议是无状态的,因此,每个查询数据库都建立新的连接。每次查询都需要发送用户名和密码到数据库中,然后建立一个新的连接,同时也建立一个新的事务(因为事务是绑定到连接中的)。可以使用’cookies’,但是现在还没有实现。

  

  并发访问

  

  server模式允许系统和管理工具(比如databasemanager同时访问数据库)。

  

  数据库性能优化因素

  

  内存数据库不需要访问系统,因此是最快的。其他模式的数据库需要访问文件系统,每个insert/update/delete操作都要保存到磁盘中,因此速度慢些。如果select和delete查询命中了缓存表的信息,则速度几乎和内存表速度一样快,否则就要慢许多(因为要和操作系统的文件系统交互)。

  

  每个statement的传输时间

  

  在server模式,每个statement都需要通过tcp/ip协议传送到服务端,然后将结果返回到客户端。而webserver和servlet模式则需要更多的时间,因为每次statement都需要重新建立连接。相对照的,进程内模式则是在一个系统内部传送数据,就快多了。

  

  以applet方式运行

  

  这就是全内存操作。

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Java学习:HSQLDB文档(一)-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章