首页 > 数据库 >HSQL 数据库介绍(1)--简介

HSQL 数据库介绍(1)--简介

时间:2024-07-07 09:42:38浏览次数:18  
标签:文件 -- 简介 数据库 server test HyperSQL hsqldb HSQL

HSQLDB(HyperSQL Database)是一款用 Java 编写的关系数据库管理系统;它提供了许多功能,并严格遵循最新的 SQL 和 JDBC 4.2 标准;本文主要介绍其基本概念及安装。

1、简介

HyperSQL Database(HSQLDB)是一款现代的关系数据库系统。HSQLDB 遵循国际 ISO SQL:2016 标准,支持完整的经典功能集,以及可选功能,如存储过程和触发器。

HyperSQL 2.7 版本兼容 Java 11 或更高版本,下载的 zip 包中还包含了使用 JDK 8 编译的版本。在 hsqldb.org 官网上还提供了使用 JDK 6 编译的版本。

SQL 标准兼容性是 HyperSQL 最独特的特点。还有一些其他显著特性。HyperSQL 可以在用户的应用程序进程内或作为单独的服务器进程内提供数据库访问。HyperSQL 可以完全在内存中运行,使用快速的内存结构。HyperSQL 可以以灵活的方式使用磁盘持久化,具有可靠的崩溃恢复功能。HyperSQL 是唯一一个具有高性能专用 LOB 存储系统的开源关系数据库管理系统,适用于 GB 级的 LOB 数据。它也是唯一一个可以创建和访问大型逗号分隔文件作为 SQL 表的关系数据库。HyperSQL 支持三种可切换的实时事务控制模型,包括完全多线程的 MVCC,并适用于高性能事务处理应用程序。HyperSQL 还适用于商业智能、ETL 和其他处理大数据集的应用程序。HyperSQL 具有各种企业部署选项,如 XA 事务、连接池数据源和远程身份验证。

HyperSQL 新增了 SQL 语法兼容模式。这些模式允许与使用非标准 SQL 语法的其他数据库系统高度兼容。

2、HSQL jar 文件说明

 HSQLDB jar 包(hsqldb.jar)位于 ZIP 包的 lib 目录中,包含多个组件和程序:

  • HyperSQL RDBMS Engine(HSQLDB)
  • HyperSQL JDBC Driver
  • DatabaseManagerSwing GUI 数据库访问工具

HyperSQL RDBMS 和 JDBC Driver 提供了核心功能。DatabaseManagerSwing 是一个数据库访问工具,可与任何具有 JDBC 驱动程序的数据库引擎一起使用。
另外还有一个 jar 包,sqltool.jar,其中包含 Sql Tool,这是一个命令行数据库访问工具,也可以用于其他数据库引擎。

3、访问数据库工具

可以通过如下方法启动访问数据库的工具:

java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing #需要使用JDK11,根据实际情况指定jar包位置

4、HSQLDB 类型

根据数据存储方式,有三种类型的 HSQLDB:

  • mem:完全存储在 RAM 中,没有持久性,超出 JVM 进程生命周期后数据将丢失。
  • file:存储在文件系统中,以文件的形式保存。
  • res:存储在 Java 资源中,例如 JAR 文件,且始终为只读状态。

mem:数据库可用于测试数据或作为应用程序的高级缓存。这些数据库没有任何文件。

file:数据库由 2 到 6 个文件组成,名称相同但扩展名不同,位于同一目录中。例如,名为"testdb"的数据库由以下文件组成:testdb.properties、testdb.script、testdb.log、testdb.data、testdb.backup、testdb.lobs。properties 文件包含有关数据库的一些设置。script 文件包含表和其他数据库对象的定义,以及内存表的数据。log 文件包含对数据库的最近更改。data 文件包含缓存表的数据,backup 文件用于恢复到数据文件的最后已知一致状态。所有这些文件都是必不可少的,不应该被删除。对于某些 catalog,testdb.data 和 testdb.backup 文件可能不存在。除了这些文件外,HyperSQL 数据库还可以链接到磁盘上任何格式化的文本文件,例如 CSV 列表。当 "testdb" catalog 处于打开状态时,会使用 testdb.log 文件记录对数据所做的更改。这个文件会在正常关闭时被删除,否则(异常关闭时),在下一次启动时将使用该文件来重做更改。testdb.lck 文件也被用来记录数据库是否处于打开状态。这个文件会在正常关闭时被删除。

res:数据库包括一个小型的只读数据库文件,可以存储在 Java 资源中,比如 ZIP 或 JAR 文件中,并作为 Java 应用程序的一部分进行分发。

5、连接模式

与 H2 类似,HSQLDB 也支持三种连接模式:
进程内模式(使用 JDBC 进行本地连接)
服务器模式(通过 TCP 或 HTTP 进行远程连接)
混合模式(同时进行本地和远程连接)

5.1、进程内模式

 应用程序使用 JDBC 从同一个 JVM 中打开数据库。根据不同类型的数据库,JDBC 连接 HSQLDB 会有不同的 URL 写法。

A、mem catalog

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");

B、file catalog

Connection c = DriverManager.getConnection("jdbc:hsqldb:file:d:/temp/test", "SA", "");

C、res catalog

Connection c = DriverManager.getConnection("jdbc:hsqldb:res:org.my.path.resdb", "SA", "");

5.2、服务器模式

对于大多数应用程序来说,进程内访问速度更快,因为数据不需要转换并通过网络发送。主要缺点是,默认情况下无法从应用程序外部连接到数据库。因此,在应用程序运行时,无法使用诸如数据库管理器之类的外部工具查询数据库的内容。
服务器模式提供了最大的可访问性。数据库引擎在 JVM 中运行并打开一个或多个进程内数据库。它监听来自同一台计算机或网络上其他计算机的程序的连接。它将这些连接转换为与数据库的进程内连接。
服务器模式也是开发过程中首选的运行数据库的模式。它允许您在应用程序运行时从单独的数据库访问工具中查询数据库。
基于客户端和服务器之间通信所使用的协议,有三种服务器模式。

5.2.1、HyperSQL HSQL Server

这是运行数据库服务器的首选方式,也是最快的方式。这种模式使用专有的通信协议。可以通过如下命令启功数据库:

java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:d:/temp/mydb --dbname.0 test #启动file数据库,数据库文件保存在d:/temp目录下,数据名称为 test
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 mem:mydb --dbname.0 test #启动mem数据库,数据名称为 test

使用 JDBC 访问该数据库:

Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/test", "SA", "");

5.2.2、HyperSQL HTTP Server

这种访问方法用于数据库服务器只能使用 HTTP 协议的情况。使用此访问方法的唯一原因是客户端或服务器机器上的防火墙所施加的限制,不应在没有此类限制的情况下使用。HyperSQL HTTP 服务器是一个特殊的 Web 服务器,允许 JDBC 客户端通过 HTTP 连接数据库。可以通过如下命令启功数据库:

java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer --database.0 file:d:/temp/mydb --dbname.0 test #启动file数据库,数据库文件保存在d:/temp目录下,数据名称为 test
java -cp ../lib/hsqldb.jar org.hsqldb.server.WebServer --database.0 mem:mydb --dbname.0 test #启动mem数据库,数据名称为 test

使用 JDBC 访问该数据库:

Connection c = DriverManager.getConnection("jdbc:hsqldb:http://localhost/test", "SA", "");

5.2.3、HyperSQL HTTP Servlet

这种访问方法也使用 HTTP 协议。它通过 Servlet 引擎(如Tomcat)提供对数据库的访问。这种方式使用较少,这里就不详细介绍,可参考源文件 src/org/hsqldb/server/Servlet.java 查看详细信息。

5.3、混合模式

 可以在应用中通过 Java 代码来启动 HSQLDB 的服务,这样本地和远程就都可以访问数据库了。

HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0","d:/temp/test");
p.setProperty("server.dbname.0","test");
Server server = new Server();
server.setProperties(p);
server.start();

6、关闭数据库

不同模式下运行的所有数据库都可以通过 SQL 语句 "SHUTDOWN" 来关闭。当发出 SHUTDOWN 命令时,所有活动事务都将被回滚。然后,数据库文件将以一种特定的形式保存,以便下次启动数据库时能快速打开这些文件。当通过 JDBC 显式关闭对数据库的最后一个连接时,数据库不会关闭。可以在第一连接数据库时指定连接属性 shutdown=true,以在最后一个连接关闭时强制关闭。

如果是在应用中启动数据库,可以通过编程方式关闭它。调用 org.hsqldb.server.Server的shutdownCatalogs(int shutdownMode)方法会关闭所有打开的数据库,导致服务器关闭。参数值通常为 1,表示正常关闭。还支持其他关闭模式,如 SHUTDOWN IMMEDIATELY。详细可查看 org.hsqldb.server.Server 的 javadoc。

7、创建新数据库

当启动数据库实例或与内部数据库建立连接时,如果给定路径上不存在数据库,则会创建一个新的空数据库。
在 HyperSQL 2.0 中,连接时指定的用户名和密码将用于新数据库。用户名和密码都区分大小写(例外是默认的SA用户,不区分大小写)。如果未指定用户名或密码,则使用默认的SA用户和空密码。
这个特性有一个副作用,可能会让新用户感到困惑。如果在指定连接到现有数据库的路径时写错了,仍然会建立与新数据库的连接。为了排除故障,您可以指定连接属性 ifexists=true,以仅允许连接到现有数据库并避免创建新数据库。在这种情况下,如果数据库不存在,getConnection() 方法将抛出异常。

8、安装

8.1、服务器模式

由于官网打不开,可从 sourceforge(https://sourceforge.net/projects/hsqldb/files/hsqldb/hsqldb_2_7/) 上下载 HSQLDB 的安装包然后解压既可。

8.2、进程模式和混合模式

引入相关依赖即可:

<dependency>
    <groupId>org.hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>2.7.2</version>
</dependency>

 

标签:文件,--,简介,数据库,server,test,HyperSQL,hsqldb,HSQL
From: https://www.cnblogs.com/wuyongyin/p/18165292

相关文章

  • F. Feed Cats
    原题链接题解每个点要么喂,要么不喂,我们令\(dp[i]\)为前\(i\)个步骤最多能喂养多少猫,易得\(dp[i]\)是单调不减的我们再维护每个点被包含的区间里的最左端\(l\)这样一来\(dp[i]=max(dp[i-1],dp[l-1]+sum)\)可是如何维护每个点被包含区间的最左端呢?我们先记录下每个右......
  • 悲观锁和乐观锁
    在Java中,悲观锁和乐观锁是处理并发访问共享资源时采用的不同策略。它们主要的区别在于对数据竞争的预期和处理方式。悲观锁(PessimisticLock)悲观锁基于“悲观”的假设,即默认情况下它认为数据可能会被其他线程修改,因此在操作数据前会尝试获得独占的锁。一旦某个线程持有悲观锁......
  • 副本集选举
    副本集使用选举来确定哪个成员将成为主成员。副本集可以响应各种事件触发选举,例如:向副本集添加新节点,initiatingareplicaset,使用诸如rs.stepDown()或rs.reconfig()和之类的方法执行副本集维护次要成员与主成员失去连接的时间超过配置的时间timeout(默认为10秒)。......
  • comfyui的官网内容摘要
    ComfyUI:功能强大且模块化的StableDiffusionGUI和后端ComfyUI是一款功能强大且模块化的StableDiffusion图形界面和后端,它使用基于图形/节点/流程图的界面来设计和执行高级StableDiffusion流程。以下是ComfyUI的主要特点和信息:主要功能:图形/节点/流程图界面:无需......
  • KubeSphere 社区双周报|2024.06.21-07.04
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.06.21-07.04。贡献者名单新晋KubeSpherecontribu......
  • 计算机毕业设计项目推荐:66945 同城信息网(开题答辩+程序定制+全套文案 )上万套实战教程
    摘要随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采SSM技术和mysql数据库来完成对系统的设计。整个开发过程首先对同城信息网进行需求分析,得出......
  • Oracle数据库高可用性研究与分析(毕业论文)
    摘要本文深入研究了Oracle数据库的高可用技术,重点探讨了RAC(实时应用集群)、DataGuard、ASM(自动存储管理)以及RMAN(恢复管理器)等核心组件的原理与框架。通过构建一套以“RAC+RMAN”为核心的高可用架构,本文旨在为企业提供一套高性能、高可用且高稳定的数据库环境。该架构不仅......
  • 常用函数:其他类型函数
    1、聚合函数:group_concat功能:用于在分组时,将指定字段的值进行合并拼接成一个字符串场景:分组聚合、行列转换语法:group_concat([distinct]col[orderbycol][separator分隔符])distinct:对元素的值进行去重orderby:按照某一列的值进行排序separator:用于指定分......
  • python基础
    Python基础一、前序查看Python版本pyhton-V或Python--version二、基础部分2.1基础语法编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是unicode字符串。当然你也可以为源码文件指定不同的编码:#-*-coding:cp-1252-*-标......
  • 《Programming from the Ground Up》阅读笔记:p19-p48
    《ProgrammingfromtheGroundUp》学习第2天,p19-p48总结,总计30页。一、技术总结1.objectfilep20,Anobjectfileiscodethatisinthemachine'slanguage,buthasnotbeencompletelyputtogether。之前在很多地方都看到objectfile这个概念,但都没有看到起定义,这次......