Apache Derby 是 Apache DB 的一个子项目,是一个完全用 Java 实现的开源关系数据库,采用 Apache License 2.0 许可;本文主要介绍其基本概念及安装。

1、Derby 特点

Derby 体积小——基础引擎和嵌入式 JDBC 驱动程序约 3.5MB。
Derby 基于 Java、JDBC 和 SQL 标准。
Derby 提供嵌入式 JDBC 驱动程序,可以将 Derby 嵌入到任何基于 Java 的解决方案中。
Derby 还支持更常见的客户端/服务器模式,通过 Derby 网络客户端 JDBC 驱动程序和 Derby 网络服务器来实现。
Derby 安装、部署和使用都很简单。

2、数据库类型

2.1.1、内存数据库

数据库的所有数据都保存在内存中,服务关闭数据丢失。

2.1.2、文件数据库

数据库数据库数据以文件的方式保存在磁盘上。

2.1.3、资源数据库

数据库数据存放在 jar 文件中,此类数据库都是只读的。

3、部署模式

3.1、嵌入模式

嵌入模式通过一个简单的单用户 Java 应用程序启动 Derby。在此模式下,Derby 与应用程序运行在同一个 Java 虚拟机(JVM)中。由于 Derby 由应用程序启动和停止,因此对最终用户几乎是不可见的,并且通常不需要管理。

Derby 数据库介绍(1)--简介_数据库

JDBC 连接 Derby 根据不同的数据库类型有不同的写法。

3.1.1、内存数据库

jdbc:derby:memory:myDb

3.1.2、文件数据库

jdbc:derby:myDb

该方式会在当前目录下生成 Derby 的数据文件;还可以指定绝对目录,数据库文件将在目标目录下生成:

jdbc:derby:d:/temp/myDb

3.1.3、资源数据库

假设数据库 myDb 被打成 jar 文件 my.jar(jar cvf my.jar myDb),则访问该 jar 文件中的数据库有两种方式:

A、该 jar 文件已在 classpath 中

jdbc:derby:classpath:myDb

B、该 jar 文件不在 classpath 中

jdbc:derby:jar:(d:/temp/my.jar)myDb

3.2、服务器模式

服务器模式通过一个提供多用户连接的应用程序启动 Derby,以便通过网络访问 Derby 数据库。在此模式下,Derby 在托管服务器的 Java 虚拟机(JVM)中运行。应用程序从不同的 JVM 连接到 Derby 服务器以访问数据库。

Derby 数据库介绍(1)--简介_数据库_02

JDBC 连接 Derby 根据不同的数据库类型有不同的写法。

3.2.1、内存数据库

jdbc:derby://localhost:1527/memory:myDb

3.2.2、文件数据库

jdbc:derby://localhost:1527/myDb

该方式会在 Derby 服务端当前目录下生成 Derby 的数据文件;还可以指定绝对目录,数据库文件将在目标目录下生成:

jdbc:derby://localhost:1527/d:/temp/myDb

3.2.3、资源数据库

A、数据库 jar 文件已在 Derby 服务的 classpath 中

jdbc:derby://localhost:1527/classpath:myDb

B、数据库 jar 文件不在 Derby 服务的 classpath 中

jdbc:derby://localhost:1527/jar:(d:/temp/my.jar)myDb

3.3、混合模式

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

NetworkServerControl server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"), 1527);
server.start (null);

4、部署

4.1、嵌入和混合模式

引入相关依赖即可:

<!--嵌入模式需要-->
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.14.2.0</version>
</dependency>
<!--作为客户端连接服务器需要-->
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.14.2.0</version>
</dependency>
<!--应用中启动 Derby 服务需要-->
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbynet</artifactId>
    <version>10.14.2.0</version>
</dependency>

4.2、服务器模式

官网(https://db.apache.org/derby/derby_downloads.html)下载部署包然后解压即可,这里下载 10.14.2.0 版本。解压后的部署包包含多个子目录:

  • demo 包含演示程序。
  • bin 包含执行工具和设置环境的脚本。
  • javadoc 包含从源代码注释生成的 API 文档。
  • docs 包含 Derby 文档。
  • lib 包含 Derby 的 jar 文件。
  • test 包含 Derby 的回归测试。

部署包中包含了一些有用的工具(命令),这些工具都快通过 /h 参数查看具体用法。

4.2.1、sysinfo

sysinfo 工具显示有关 Java 环境和 Derby 版本的信息。

D:\temp\db-derby-10.14.2.0-bin\bin>sysinfo.bat

4.2.2、ij

ij 工具是一个 JDBC 工具,你可以用它来运行脚本或对 Derby 数据库执行交互式查询。

D:\temp\db-derby-10.14.2.0-bin\bin>ij.bat
ij 版本 10.14
ij> connect 'jdbc:derby:myDb;create=true';
ij> show tables;
TABLE_SCHEM         |TABLE_NAME                    |REMARKS
------------------------------------------------------------------------
SYS                 |SYSALIASES                    |
SYS                 |SYSCHECKS                     |
SYS                 |SYSCOLPERMS                   |
SYS                 |SYSCOLUMNS                    |
SYS                 |SYSCONGLOMERATES              |
SYS                 |SYSCONSTRAINTS                |
SYS                 |SYSDEPENDS                    |
SYS                 |SYSFILES                      |
SYS                 |SYSFOREIGNKEYS                |
SYS                 |SYSKEYS                       |
SYS                 |SYSPERMS                      |
SYS                 |SYSROLES                      |
SYS                 |SYSROUTINEPERMS               |
SYS                 |SYSSCHEMAS                    |
SYS                 |SYSSEQUENCES                  |
SYS                 |SYSSTATEMENTS                 |
SYS                 |SYSSTATISTICS                 |
SYS                 |SYSTABLEPERMS                 |
SYS                 |SYSTABLES                     |
SYS                 |SYSTRIGGERS                   |
SYS                 |SYSUSERS                      |
SYS                 |SYSVIEWS                      |
SYSIBM              |SYSDUMMY1                     |

已选择 23 行
ij> select * from sys.systables;

4.2.3、dblook

dblook 是一个 DDL 生成工具,可以将数据库的全部或部分 DDL 转储到控制台或文件中。

D:\temp\db-derby-10.14.2.0-bin\bin>dblook.bat -d 'jdbc:derby:d:/temp/myDb' -o d:/temp/myDb.sql

4.2.4、NetworkServerControl

NetworkServerControl 可以用来启动或关闭 Derby 服务。

A、启动 Derby 服务

D:\temp\db-derby-10.14.2.0-bin\bin>NetworkServerControl.bat start -p 1527 -noSecurityManager
Fri Aug 23 11:26:23 CST 2024 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 已启动并准备接受端口 1527 上的连接

B、关闭 Derby 服务

D:\temp\db-derby-10.14.2.0-bin\bin>NetworkServerControl.bat shutdown -p 1527
Fri Aug 23 11:28:56 CST 2024 : Apache Derby 网络服务器 - 10.14.2.0 - (1828579) 关闭

 

 

参考:https://db.apache.org/derby/manuals/index.html