近来研究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方式运行
这就是全内存操作。
初用 hsqldb
今天初了下 hsqldb
下载 hsqldb
http://sourceforge.net/project/showfiles.php?group_id=23316
下载 hsqldb_1_8_0_7.zip
解压到 D:/hsqldb
在 D:/hsqldb 目录下创建 runxdb.bat 文件如下:
cd data
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 xdb -dbname.0 xdb
然后双击 runxdb.bat 启动 hsqldb Server
到目录 demo 下运行 runManagerSwing.bat 来创建表
type : HSQL Database Engine Server
url : jdbc:hsqldb:hsql://localhost/xdb
user : SA
建表:
CREATE MEMORY TABLE TEXT(ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,NAME VARCHAR);
添加数据:
INSERT INTO TEXT VALUES(1,'chenlb')
INSERT INTO TEXT VALUES(2,'Tenny')
Java 文件
package hsqldb;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author chenlb 2007-4-28
*
*/
public class HsqldbFirstSimple {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class.forName("org.hsqldb.jdbcDriver" );
} catch (Exception e) {
System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
e.printStackTrace();
return;
}
try {
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", "");
Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("select * from text");
while(rs.next()) {
System.out.println(rs.getString(1)+"\t"+rs.getString(2));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
HSQldb是一个轻量级的关系型数据库管理系统,特别适合用于系统演示、开发和测试环境。它的特点是快速、灵活且易于使用。HSQldb支持多种运行模式,满足不同场景的需求。 1. **数据库实例创建** 创建HSQldb数据库...
### HSQLDB中文帮助文档知识点总结 #### 一、HSQLDB概述 - **定义**:HSQLDB(HyperSQL Database)是一款轻量级、开源的纯Java SQL数据库管理系统。它能够作为嵌入式数据库使用,也可以作为一个独立的服务器运行。 ...
**HSQldb 2.2.8 数据库详解** HSQldb(HyperSQL Database)是一款高效、轻量级且开源的Java数据库管理系统,它在IT领域中被广泛应用于开发、测试以及小型应用环境。HSQldb完全用Java编写,因此具有良好的跨平台性,...
### HSQLDB快速连接数据库 #### 一、HSQLDB简介与特点 HSQLDB(HyperSQL Database)是一款优秀的轻量级开源纯Java SQL数据库管理系统。它被设计为易于集成到现有的Java应用环境中,尤其适合那些对性能和资源消耗有...
HSQldb,全称HyperSQL Database,是一款开源的、轻量级的关系型数据库管理系统,尤其适合于嵌入式应用和开发测试环境。HSQldb完全用Java编写,因此具有跨平台性,能在任何支持Java的环境中运行,包括Windows操作系统...
hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。
《HSQldb与Java数据库连接详解》 HSQldb(HyperSQL Database)是一款开源、轻量级、嵌入式的关系型数据库管理系统,广泛应用于Java应用程序中。它支持SQL标准,提供单用户和多用户模式,并且可以运行在内存中或磁盘...
HSQldb是一个开源的、轻量级的、嵌入式的Java数据库引擎,常用于开发测试环境和小型应用程序。它的全称是HyperSQL Database,能够支持SQL标准,包括SQL:2011。HSQldb因其小巧、快速和易用的特点,在Java开发中尤其受...
《HSQldb 2.3.3:轻量级数据库引擎深度解析》 HSQldb,全称为HyperSQL Database,是一款开源、纯Java语言编写的轻量级关系型数据库管理系统,广泛应用于测试环境、嵌入式系统以及小型应用中。HSQldb 2.3.3是其稳定...
HSQldb是一个开源的、轻量级的关系型数据库管理系统,主要设计用于嵌入式环境,同时也支持服务器模式。它实现了SQL标准,支持多种数据库功能,包括事务处理、存储过程、触发器和视图等。本实例源代码将帮助我们深入...
标题 "hsqldb相关几个文件" 提到的是与HSQldb相关的压缩包资源,HSQldb是一个开源的关系型数据库管理系统,特别适用于Java应用程序。描述中提及的有两个zip文件:hsqldb_1_8_0_10.zip 和 hsqldb-mini.zip,以及一个...
hsqldb 2 3 2 zip HyperSQL是用Java编写的一款SQL关系数据库引擎 它的核心完全是多线程的 支持双向锁和MVCC 多版本并发控制 几乎完整支持ANSI 92 SQL 支持常见数据类型 最新版本增加了对BLOB和CLOB数据的支持 最高...
HSQLDB(HyperSQL Database)是一个轻量级、高性能的关系型数据库引擎,常用于Java应用程序和测试环境中。它的缓存机制和数据存储方式对于理解其性能和操作至关重要。以下是对HSQLDB的缓存分析和调试步骤的详细解释...
《开源数据库软件HSQldb深度解析》 HSQldb,全称HyperSQL Database,是一款完全开源、免费的Java实现的关系型数据库管理系统(RDBMS),它支持多种运行环境,包括独立服务器模式、嵌入式模式以及Web应用。HSQldb因...
HSQLDB,全称 HyperSQL Database,是一款轻量级、高性能、开源的Java关系型数据库管理系统。它在Java环境中运行,适用于开发嵌入式数据库应用、测试环境以及作为服务器模式的数据库系统。HSQLDB因其小巧、快速和易用...
### HSQLDB中文文档第六章 Text表解析 #### 一、概述 HSQLDB (HyperSQL Database) 是一款高性能的开源轻量级关系型数据库管理系统,适用于开发测试环境及小型应用系统。Text表是HSQLDB的一个特色功能,主要用于...