您的位置:首页精文荟萃软件资讯 → Java学习:HSQLDB文档(一)

Java学习:HSQLDB文档(一)

时间:2004/10/7 18:12:00来源:本站整理作者:蓝点我要评论(0)

 近来研究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\test
  
  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方式运行
  
  这就是全内存操作
 

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本