文章目录
Apache Derby 简介安装配置部署模式基本操作创建数据库执行 SQL 语句运行 SQL 脚本断开数据库连接生成 DDL 语句Maven 依赖资源文档总结大家好,我是只谈技术不剪发的 Tony 老师。今天给大家介绍一款嵌入式关系型数据库:Apache Derby。
Apache Derby 简介
Apache Derby 是一个开源的嵌入式关系型数据库,完全使用 Java 语言实现,并遵循 Apache License, Version 2.0 协议。Apache Derby 是 Apache DB的一个子项目,它的主要优势包括:
Derby 程序体积很小,基本的数据库引擎和嵌入式 JDBC 驱动大概只有 3.5 MB;Derby 基于 Java、JDBC 以及 SQL 标准实现;Derby 提供了一个嵌入式的 JDBC 驱动,可以在任何 Java 应用中嵌入 Derby 数据库;Derby 支持客户端/服务器部署模式,并提供了 Derby Network Client JDBC 驱动和 Derby Network Server;Derby 易于安装、部署和使用。Derby 最早是由 IBM 于 2004 年贡献给 Apache Software Foundation,开源之前的名称叫做 Cloudscape。目前,Apache Derby 基本上保持每年一个版本更新,最新版本为 10.15.2.0;源代码可以从 GitHub 或者 Apache 官方 SVN 代码库中下载。
📝Oracle 曾经在 JDK 中打包了一个 Derby 版本,叫做 Java DB;不过现在 JDK 中已经不再默认包含这个 db 目录了。
安装配置
Apache Derby 官方网站提供了下载页面。
最新的版本需要 Java 9 以上运行环境,点击版本链接之后选择一个下载地址镜像,打开的页面中包含了所有的 Apache Software Foundation 软件下载目录。然后打开 db/derby/ 就是各种版本的下载目录了,这里我们选择 db-derby-10.15.2.0 子目录:
然后点击下载 db-derby-10.15.2.0-bin.zip 文件,下载完成后进行解压缩。
解压缩之后的目录如下:
Apache Derby 基于 Java 环境运行,需要先安装 JDK 或者 JRE,可以点击下载安装并配置环境变量 JAVA_HOME,将 JDK 的 bin 目录添加到 PATH 环境变量,然后使用java -version
查看当前 Java 版本。
PS C:\Users\dongx> java -versionjava version "13.0.1" 2019-10-15Java(TM) SE Runtime Environment (build 13.0.1+9)Java HotSpot(TM) 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
接下来还需要设置 Derby 的环境变量,将 DERBY_HOME 设置为解压之后的目录,并且将 DERBY_HOME/bin 添加到 PATH 环境变量。
部署模式
Apache Derby 支持两者基本的部署方式:嵌入式(embedded)或者客户端/服务器模式(client/server)。
对于嵌入式部署,Derby 运行在应用程序的 JVM 中,应用通过 Embedded Derby JDBC 驱动访问数据库。此时,Derby 属于应用的一部分,随着应用启动和关闭,用户无法感知它的存在,通常也不需要进行配置和管理。
对于者客户端/服务器模式,Derby 运行在服务器的 JVM 中,多个应用程序通过网络连接到 Derby 数据库。此时,Derby Network Server 负责管理来自客户端的连接请求,客户端利用 Derby Network Client JDBC 驱动连接到服务器。
接下来我们以嵌入式部署为例,介绍如何配置 Derby。点击运行 bin 目录中的 setEmbeddedCP(Linux)或者 setEmbeddedCP.bat(Windows)脚本:
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\setEmbeddedCP.batC:\Users\dongx>SET DERBY_HOME=D:\Software\db-derby-10.15.2.0-binC:\Users\dongx>set CLASSPATH=D:\Software\db-derby-10.15.2.0-bin\lib\derbyshared.jar;D:\Software\db-derby-10.15.2.0-bin\lib\derby.jar;D:\Software\db-derby-10.15.2.0-bin\lib\derbytools.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbyoptionaltools.jar;C:\Users\dongx>set MODULEPATH=D:\Software\db-derby-10.15.2.0-bin\lib\derbyshared.jar;D:\Software\db-derby-10.15.2.0-bin\lib\derby.jar;D:\Software\db-derby-10.15.2.0-bin\lib\derbytools.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbyoptionaltools.jar
该脚本会设置相应的 CLASSPATH 和 MODULEPATH 环境变量。
然后运行 bin 目录中的 sysinfo(Linux)或者 sysinfo.bat(Windows)脚本查看 Derby 的环境配置:
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\sysinfo.bat------------------ Java Information ------------------Java Version:13.0.1Java Vendor: Oracle CorporationJava home: C:\Program Files\Java\jdk-13.0.1Java classpath:D:\Software\db-derby-10.15.2.0-bin/lib/derbyshared.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derby.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbynet.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbyclient.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbytools.jar;D:\Software\db-derby-10.15.2.0-bin/lib/derbyoptionaltools.jarOS name: Windows 10OS architecture: amd64OS version:10.0Java user name:dongxJava user home:C:\Users\dongxJava user dir: C:\Users\dongxjava.specification.name: Java Platform API Specificationjava.specification.version: 13java.runtime.version: 13.0.1+9--------- Derby Information --------[D:\Software\db-derby-10.15.2.0-bin\lib\derby.jar] 10.15.2.0 - (1873585)[D:\Software\db-derby-10.15.2.0-bin\lib\derbytools.jar] 10.15.2.0 - (1873585)[D:\Software\db-derby-10.15.2.0-bin\lib\derbynet.jar] 10.15.2.0 - (1873585)[D:\Software\db-derby-10.15.2.0-bin\lib\derbyclient.jar] 10.15.2.0 - (1873585)[D:\Software\db-derby-10.15.2.0-bin\lib\derbyshared.jar] 10.15.2.0 - (1873585)[D:\Software\db-derby-10.15.2.0-bin\lib\derbyoptionaltools.jar] 10.15.2.0 - (1873585)----------------------------------------------------------------------- Locale Information -----------------Current Locale :[English/United States [en_US]]Found support for locale: [cs] version: 10.15.2.0 - (1873585)Found support for locale: [de_DE] version: 10.15.2.0 - (1873585)Found support for locale: [es] version: 10.15.2.0 - (1873585)Found support for locale: [fr] version: 10.15.2.0 - (1873585)Found support for locale: [hu] version: 10.15.2.0 - (1873585)Found support for locale: [it] version: 10.15.2.0 - (1873585)Found support for locale: [ja_JP] version: 10.15.2.0 - (1873585)Found support for locale: [ko_KR] version: 10.15.2.0 - (1873585)Found support for locale: [pl] version: 10.15.2.0 - (1873585)Found support for locale: [pt_BR] version: 10.15.2.0 - (1873585)Found support for locale: [ru] version: 10.15.2.0 - (1873585)Found support for locale: [zh_CN] version: 10.15.2.0 - (1873585)Found support for locale: [zh_TW] version: 10.15.2.0 - (1873585)------------------------------------------------------------------------------------------------------------
显示类似以上信息表明 Derby 运行环境配置成功。
基本操作
Derby 提供了几个基于 Java 的实用工具和程序,包括 sysinfo、ij 和 dblook 等。其中,ij 是用于操作 Derby 数据库的一个交互式 SQL 脚本工具。
首先,我们运行 bin 目录中的 ij(Linux)或者ij.bat(Windows)脚本启动 ij:
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\ij.batij version 10.15ij>
当前 ij 版本为 10.15。输入 help 命令查看使用帮助:
ij> help; Supported commands include:PROTOCOL "JDBC protocol" [ AS ident ]; -- sets a default or named protocolDRIVER "class for driver"; -- loads the named classCONNECT "url for database" [ PROTOCOL namedProtocol ] [ AS connectionName ]; -- connects to database URL -- and may assign identifierSET CONNECTION connectionName; -- switches to the specified connectionSHOW CONNECTIONS;-- lists all connectionsAUTOCOMMIT [ ON | OFF ]; -- sets autocommit mode for the connectionDISCONNECT [ CURRENT | connectionName | ALL ]; -- drop current, named, or all connections; -- the default is CURRENTSHOW SCHEMAS;-- lists all schemas in the current databaseSHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN schema }; -- lists tables, views, procedures, functions or synonyms...
创建数据库
我们通过 ij 工具创建一个数据库:
ij> connect "jdbc:derby:hrdb;create=true";
其中,连接 URL 中的 create=true 表示创建一个新的数据库,名称为 hrdb;如果没有指定该选项,并且数据库不存在的话会返回以下错误:
ij> connect "jdbc:derby:hrdb";ERROR XJ004: Database "hrdb" not found.
使用 exit 命令退出 ij:
ij> exit;
新建的数据库文件位于操作系统当前工作目录,可以使用 ls 或者 dir 命令进行查看:
C:\Users\dongx>dir hrdb Directory of C:\Users\dongx\hrdb08/31/202004:19 PM<DIR>.08/31/202004:19 PM<DIR>..08/31/202004:18 PM<DIR>log08/31/202004:19 PM 608 README_DO_NOT_TOUCH_FILES.txt08/31/202004:19 PM<DIR>seg008/31/202004:19 PM 921 service.properties 2 File(s)1,529 bytes 4 Dir(s)143,770,697,728 bytes free
另外,当前目录中还存在一个 derby.log 日志文件。
执行 SQL 语句
再次启动 ij 工具并运行 connect 命令连接数据库:
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\ij.batij version 10.15ij> connect "jdbc:derby:hrdb";ij>
连接成功之后就可以执行各种 SQL 语句,ij 中的语句以分号(;)结束:
ij> create table test(id int primary key, name varchar(50));0 rows inserted/updated/deletedij> insert into test values(1, "apple"),(2, "banana");2 rows inserted/updated/deletedij> select * from test;ID |NAME--------------------------------------------------------------1|apple2|banana2 rows selected
运行 SQL 脚本
ij 工具支持调用 SQL 脚本,执行 run 命令运行指定的文件:
ij> run "myfile.sql";
run 命令会打印并执行脚本文件中的内容。
断开数据库连接
使用 disconnect 命令断开当前数据库连接:
ij> disconnect;ij>
如果想要退出 ij 工具,使用 exit 命令;对于嵌入式模式,该命令同时会关闭数据库。
生成 DDL 语句
dblook 工具可以查看指定数据库的 DDL 语句。
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\dblook.bat -d hrdb-- Timestamp: 2020-08-31 16:57:02.648-- Source database is:-- Connection URL is: hrdb-- appendLogs: false-- Note: At least one unexpected error/warning message was-- encountered during DDL generation.See dblook.log-- to review the message(s).C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\dblook.bat -d jdbc:derby:hrdb-- Timestamp: 2020-08-31 16:58:25.764-- Source database is: hrdb-- Connection URL is: jdbc:derby:hrdb-- appendLogs: false-- ------------------------------------------------ DDL Statements for tables-- ----------------------------------------------CREATE TABLE "APP"."TEST" ("ID" INTEGER NOT NULL, "NAME" VARCHAR(50));-- ------------------------------------------------ DDL Statements for keys-- ------------------------------------------------ PRIMARY/UNIQUEALTER TABLE "APP"."TEST" ADD CONSTRAINT "SQL0000000000-80220011-0174-43a1-f682-00000f4783f0" PRIMARY KEY ("ID");
使用 -o 选项可以将 DDL 语句保存到指定文件中:
C:\Users\dongx>D:\Software\db-derby-10.15.2.0-bin\bin\dblook.bat -d jdbc:derby:hrdb -o hrdb.sql
📝关于 ij、dblook 和其他工具的详细介绍,可以参考官方文档。
Maven 依赖
如果想要在自己的 Java 应用中使用 Apache Derby 数据库,可以添加以下 Maven 依赖:
<dependency><groupId>org.apache.derby</groupId><artifactId>derby</artifactId><version>10.15.2.0</version></dependency>
最新的版本配置可以查看 Maven Central。
资源文档
如果想要进一步深入了解和学习 Apache Derby,可以参考以下资源:
Apache Derby 官方网站;Apache Derby 官方文档;入门教程;tutorialspoint 在线教程;博客文章;Apache Derby 支持的 SQL 功能;管理开发工具:DBeaver、SQuirreL SQL、DbVisualizer。总结
Apache Derby 是一款基于 Java 实现的关系型数据库,支持嵌入式和客户端/服务器部署模式。总而言之,Derby 是一个小巧而强大的产品,通常作为一个嵌入式数据库运行在其他 Java 应用程序中。本文介绍了 Derby 的安装配置、常用工具的基本操作以及相关的学习资源。
如果觉得文章对你有用,欢迎关注❤️、评论📝、点赞👍!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。