Apache Derby:一款基于 Java 的嵌入式关系型数据库 centos7 安装 jdk8 (复制粘贴系列) 堡垒机Jumpserver部署 linux-linux常用命令总结二&&Linux其他网络知识&&远程拷贝以&&远程登录服务器 Linux应用程序开发笔记:配置linuxptp开机启动(ubuntu gPTP) Janus WebRTC服务器部署 【Nginx】nginx 的三种反向代理方式 OpenLDAP源码安装及配置管理 ceph客户端安装配置访问rbd 把编译好的ko文件加载模块时出错:Error: could not insert module hello_world.ko: Invalid module format 如何安装pkg-config docker文件存放路径, 获取容器启动命令 修炼js 7 es6新特性2 网页三栏布局常用方法 wordpress必须禁用REST API和移除WP-JSON链接的方法 面试官让我用纯css做一个下拉菜单,一分钟搞定!! CSS常用样式(二):绘制双箭头 住建部重申“房子是用来住的”;商务部公布禁塑时间表;在线旅游网站不得大数据杀熟 给大数据杀熟戴上“紧箍咒” RT-Thread推物联网操作系统!300秒启动安防摄像机 如何用一句话激怒程序员! 吉利在青岛成立物联网、卫星技术新公司 统计学和大数据之间有哪些联系 图说:九月开门红 大数据揭示A股九月行情走向 物联网时代下的“芯机遇”,「芯来科技」打造国产RISC-V生态 汇顶科技:指纹芯片巨头半年研发投入增八成,拓展物联网、汽车电子等领域应对风险 新华网|福州:树立物联网产业“马尾坐标” 「行走自贸区」福州:树立物联网产业“马尾坐标” k8s跨namespace访问服务 Mysql关键字和保留字(注意) ALTER command denied to user 'dev'@'192.168.10.xxx' for table 'xx_fanv_fail' oracle授权查询 ffmpeg vsync参数分析 小程序云函数中用group分组查询,只能查询20条,怎么解决? 【MyBatis&MyBatis-plus】分页查询避免两次查询同时返回总数和数据 数据库执行update语句没有反应,一直转圈,数据库锁表处理解决方法 按键精灵-自定义函数time(),datetime(),diff() 在Vue+Element中,Select选项值动态从后台接口获取的实现方法 mongoTemplate的方法和update() 欧科云链OKLink推出“链上天眼”功能 区块链+大数据全面助力链上安全 第二届微热点大数据论坛将于9月5日开幕 网龙参与全国教育大数据统计 构建五级服务支撑体系 无代码app制作崛起,app开发已不再是程序员的专利了 torch深入学习之凤飞九天torch.nn.MarginRankingLoss 【机器学习】—各类梯度下降算法 简要介绍 隐马尔可夫模型(HMM)来龙去脉(二) 单智能体、多智能体强化学习基本概念及算法分类?为啥提出多智能体强化学习,现状? 张量网络算法基础(八、张量网络机器学习【上】) MapReduce 简介 Python爬虫入门教程 81-100 小众爬虫框架looter,框架作者竟然在官方手册开车
您的位置:首页 >大数据 >

Apache Derby:一款基于 Java 的嵌入式关系型数据库

文章目录

Apache Derby 简介安装配置部署模式基本操作创建数据库执行 SQL 语句运行 SQL 脚本断开数据库连接生成 DDL 语句Maven 依赖资源文档总结

大家好,我是只谈技术不剪发的 Tony 老师。今天给大家介绍一款嵌入式关系型数据库:Apache Derby。

Apache Derby 简介

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 官方网站提供了下载页面。

download
最新的版本需要 Java 9 以上运行环境,点击版本链接之后选择一个下载地址镜像,打开的页面中包含了所有的 Apache Software Foundation 软件下载目录。然后打开 db/derby/ 就是各种版本的下载目录了,这里我们选择 db-derby-10.15.2.0 子目录:

derby
然后点击下载 db-derby-10.15.2.0-bin.zip 文件,下载完成后进行解压缩。

dir
解压缩之后的目录如下:

bin 目录包含了环境设置、服务管理以及常用工具的脚本demo 目录包含了几个示例程序;docs 目录包含了 Derby 官方文档;javadoc 目录包含了 API 文档;lib 目录包含了 Derby 所有的 .jar 文件;test 目录包含了 Derby 回归测试。

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 驱动连接到服务器。

C/S
接下来我们以嵌入式部署为例,介绍如何配置 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 的安装配置、常用工具的基本操作以及相关的学习资源。

如果觉得文章对你有用,欢迎关注❤️、评论📝、点赞👍!

不剪发的Tony老师CSDN认证博客专家数据库架构师毕业于北京航空航天大学,十多年数据库管理与开发经验,拥有OCP以及RHCE证书。目前在一家全球性的游戏公司从事数据库架构设计和开发,CSDN学院签约讲师以及GitChat专栏作者。

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