Apache Derby 10.17.1.0 介绍与选型指南

介绍 Apache Derby 10.17.1.0:纯 Java 嵌入式关系数据库的运行模式、架构与功能特性、官方快速上手示例,说明 2025-10-10 项目退役状态,量化对比 H2、HSQLDB、SQLite 并给出选型建议。

DerbyDerby关系型数据库嵌入式数据库嵌入式2026/10/18

Apache Derby 10.17.1.0 介绍与选型指南

本文为 A1 认知篇(软件介绍与选型指南),全部信息来自官方公开资料溯源(官网、官方文档、官方代码仓库发行记录、发行目录与 Maven Central 元数据),不含本地安装与实测数据。文末附官方来源清单。

一、信息基准

1.1 查询基准

  • 查询日期:2026-10-18。
  • 版本依据:Apache Derby 10.17.1.0,为查询时点官方最新稳定版,也是项目退役前的最终版本。官方下载页标注该版本发布日期为 2023-11-10(官网新闻栏公告日为 2023-11-14);Maven Central org.apache.derby:derby 的 latest/release 元数据同为 10.17.1.0,两处相互印证。
  • 项目状态(重要):据官网首页 2026-10-18 实查,Derby 开发者已于 2025-10-10 投票将项目退役为只读状态——开发与缺陷修复已终止,不再发布新版本,官网与 Wiki 冻结,JIRA 只读,用户与开发者邮件列表停用(仅存档可访问)。
  • 许可:Apache License 2.0(官网载明)。

1.2 官方来源清单

来源说明链接
官网项目主页(含退役声明与特性描述)https://db.apache.org/derby/
官方下载页版本列表与发布日期标注https://db.apache.org/derby/derby_downloads.html
官方文档(10.17)权威使用文档https://db.apache.org/derby/docs/10.17/
官方入门指南Getting Started Guidehttps://db.apache.org/derby/docs/10.17/getstart/
官方教程Apache Derby Tutorial(ij 示例出处)https://db.apache.org/derby/papers/DerbyTut/ij_intro.html
Maven Central版本元数据交叉核验https://repo1.maven.org/maven2/org/apache/derby/derby/maven-metadata.xml
发行目录ASF 发行归档https://downloads.apache.org/db/derby/

二、软件概述

Apache Derby 10.17.1.0(查询时点 2026-10-18 的官方最新稳定版,亦为退役前最终版本)是一款完全用 Java 实现的开源关系数据库,由 Apache DB 子项目管理,以 Apache License 2.0 发行。官网对其定位的表述是:基于 Java、JDBC 与 SQL 标准构建,基础引擎加嵌入式 JDBC 驱动的体积约为 3.5 MB,随 Java 应用内嵌部署;同时提供更常见的客户端/服务器运行模式(Derby Network Client JDBC 驱动 + Derby Network Server),安装、部署与使用都很简单。

需要特别强调的是项目状态:2025-10-10 项目开发者投票退役,Derby 进入只读状态,不再有后续版本与缺陷修复。本文以此前长期使用的 10.17.1.0 为信息基准撰写,供存量资产评估与选型参考;对新项目,选型结论见第七章。

三、核心架构

3.1 两种运行模式

  • 嵌入式模式:应用进程通过嵌入式 JDBC 驱动(org.apache.derby.jdbc.EmbeddedDriver)直接加载数据库引擎,数据库随应用启动与关闭,无独立服务进程;同一时刻同一数据库默认由一个 JVM 独占打开。
  • 客户端/服务器模式:由 Derby Network Server 监听网络端口(默认 1527),多个客户端经 Derby Network Client JDBC 驱动(org.apache.derby.jdbc.ClientDriver)以 jdbc:derby://host:1527/dbName 形式访问;Network Server 本身仍构建在嵌入式引擎之上。

3.2 数据组织与持久化

  • 一个数据库对应文件系统中的一个目录,表、索引与系统目录均存放于该目录内;连接 URL 中 create=true 属性可在首次连接时自动创建数据库。
  • 内部包含数据段、事务日志与检查点机制,通过日志先行保证事务持久性,支持在线备份(backup)操作。
  • 数据库内建系统目录(system catalog),以系统表形式暴露模式元数据,可用普通 SQL 查询。

3.3 SQL 与 JDBC 实现

  • 10.17.1.0 支持 JDBC 4.3,官方下载页标注该版本运行环境为 Java 21 及以上(上一版 10.16.1.1 对应 Java 17 及以上)。
  • SQL 实现为标准子集:支持事务(多级隔离级别)、主外键约束、唯一性约束、检查约束、视图、触发器、序列、递归查询等,具体能力边界以 10.17 官方参考手册为准。
  • 存储过程与函数可用 Java 编写并直接挂载到数据库内执行,是纯 Java 数据库的差异化能力。

3.4 随附工具

官方发行包附带一组工具类:ij(交互式 SQL 脚本工具)、sysinfo(环境与版本信息)、dblook(DDL 导出)、NetworkServerControl(Network Server 启停管理),均以 Java 类或 derbyrun.jar 入口提供。

四、功能特性

4.1 零管理嵌入式部署

无需安装独立服务,引擎随 JVM 加载;首次连接自动建库、自动执行启动恢复,适合随应用分发的自带存储。基础引擎加嵌入式驱动约 3.5 MB 的体积(官网口径)显著低于常见独立数据库。

4.2 事务与数据完整性

完整 ACID 事务支持,提供读未提交/读已提交/可重复读/串行化隔离级别,崩溃后自动回滚恢复;日志与检查点机制保证持久化。

4.3 安全能力

支持数据库级加密(对磁盘上的数据加密)、用户认证(内置或外接 LDAP/JNDI 等方式)与 SQL 授权;能力边界以官方安全指南为准。

4.4 Java 生态整合

  • 存储过程、函数与触发器逻辑可直接用 Java 编写;
  • 支持 JPA/JDO 等 ORM 框架接入(官方 Quick Start 列举了 Eclipse、NetBeans 等 IDE 与 iBATIS、JPOX JDO 等映射工具的历史集成条目);
  • 数据库可与应用打包为同一交付单元,简化部署。

4.5 可诊断性

提供运行时诊断表、错误日志与 sysinfo 环境报告,便于定位运行问题;官方文档含 Tuning 与 Troubleshooting 指南。

五、快速上手

以下操作引自官方教程 Apache Derby Tutorial(ij 章节,未做本地实测)。配置类路径后启动 ij:

java org.apache.derby.tools.ij

创建并连接数据库(create=true 属性触发自动建库),随后执行 SQL:

ij> CONNECT 'jdbc:derby:MyDbTest;create=true';
ij> CREATE TABLE menu (item VARCHAR(32), price INT);
ij> INSERT INTO menu VALUES ('rice', 3);
ij> SELECT * FROM menu;

客户端/服务器模式:先启动 Network Server(官方文档命令),再以网络 URL 连接:

java org.apache.derby.drda.NetworkServerControl start
CONNECT 'jdbc:derby://localhost:1527/MyDbTest';

官方入门文档:Getting Started Guide(https://db.apache.org/derby/docs/10.17/getstart/ )与 Derby Tutorial(https://db.apache.org/derby/papers/DerbyTut/ij_intro.html )。

六、适用场景与限制

6.1 适用场景

  • Java 桌面端/单机应用自带存储:随应用分发、零安装、纯 Java 无外部依赖。
  • 单元测试与演示:用真实 SQL 数据库替换内存桩,测试后直接删除数据库目录。
  • 小型工具与批处理程序:数据量与并发都很小的本地持久化需求。
  • 存量系统维护:历史上大量 Java 商业与内部系统内嵌 Derby,10.17.1.0 为这些资产的最终基线。

6.2 限制与注意事项

  • 项目已退役:2025-10-10 起只读,无新版本、无缺陷修复、无安全补丁通道,这是当前最大的选型约束。
  • 无内置多机高可用:嵌入式模式单 JVM 独占,客户端/服务器模式亦无官方集群与自动故障转移能力。
  • 不适合高并发大规模在线事务处理:定位为嵌入式轻量数据库,写入吞吐与连接规模无法与独立服务型数据库相比。
  • 依赖 JVM:运行环境必须为 Java 21 及以上(10.17.1.0),非 Java 技术栈无法使用。
  • 历史发版节奏慢:10.14 至 10.17 间隔约 1.5-2 年,退役后节奏终止。

七、同类选型对比

7.1 对比对象与版本基准

同为「轻量/嵌入式关系数据库」定位的三个对比对象:H2(纯 Java 嵌入式)、HSQLDB(纯 Java 嵌入式,Derby 的历史同源项目 HyperSQL)、SQLite(C 实现的单文件嵌入式)。版本基准(2026-10-18 查询):Derby 10.17.1.0(2023-11-10,已退役);H2 2.5.252(官方仓库 releases 记录 2026-09-24);HSQLDB 以官网与仓库现行版本为准(GitHub 同步副本无发行记录,官方未公布节奏);SQLite 3.54.1(官网下载页实查)。

7.2 量化对比

维度Derby 10.17.1.0H2 2.5.252HSQLDBSQLite 3.54.1
开源许可Apache-2.0MPL-2.0 或 EPL-1.0 双许可(官方 LICENSE.txt 载明)BSD 系许可(官方仓库载明)Public Domain
最近发版 / stars(2026-10-18)2023-11-10(最终版);379(apache/derby)2026-09-24;4,637(h2database/h2database)官方未公布(GitHub 同步副本 stars 为 0,无 release 记录)官网未公布 stars 口径(主仓库不在 GitHub)
版本节奏退役前约 1.5-2 年一版,现已终止持续维护,2.5.x 常规更新官方未公布高频小幅迭代,年度多版
兼容矩阵Java 21+(10.17),跨 JVM 平台Java,跨平台;提供 MySQL/PostgreSQL 等兼容模式Java,跨平台C 编译,单文件库;语言绑定覆盖最广
定位能力纯 Java 嵌入式,JDBC 4.3,Java 存储过程,数据库加密纯 Java 嵌入式+服务器模式,内存库,测试场景事实标准纯 Java 嵌入式+服务器模式,HyperSQL 品牌单文件嵌入式引擎,非 C/S,离线分析查询能力逐步增强

(数据来源:各项目官网、官方仓库 LICENSE 与 releases feed、Maven Central 元数据,均为 2026-10-18 查询。)

7.3 选型建议

一句话建议:Derby 已退役,不建议新项目采用——新的 Java 嵌入式需求优先选 H2(活跃、兼容模式丰富),跨语言或极致轻量场景选 SQLite;存量 Derby 应用可维持 10.17.1.0 基线运行,但应尽早规划向 H2/PostgreSQL 等活跃项目的迁移路径。

八、参考链接

  1. 官网(含退役声明):https://db.apache.org/derby/
  2. 官方下载页(版本与日期标注):https://db.apache.org/derby/derby_downloads.html
  3. 官方文档 10.17:https://db.apache.org/derby/docs/10.17/
  4. Getting Started Guide:https://db.apache.org/derby/docs/10.17/getstart/
  5. Derby Tutorial(ij 示例):https://db.apache.org/derby/papers/DerbyTut/ij_intro.html
  6. Maven Central 版本元数据:https://repo1.maven.org/maven2/org/apache/derby/derby/maven-metadata.xml
  7. ASF 发行目录:https://downloads.apache.org/db/derby/
  8. H2 官网与仓库:https://h2database.com/ ;https://github.com/h2database/h2database
  9. HSQLDB 官网与仓库:http://hsqldb.org/ ;https://github.com/hsqldb/hsqldb
  10. SQLite 官网下载页:https://www.sqlite.org/download.html