用 Apache Derby 进行开发 —— 取得节节胜利: 介绍 Apache Derby

2023-12-26 05:40

本文主要是介绍用 Apache Derby 进行开发 —— 取得节节胜利: 介绍 Apache Derby,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.ibm.com/developerworks/cn/opensource/os-ad-trifecta1/

亲自去试试 —— 欣赏它的简易性

从某一点来说,几乎每个应用程序开发人员都面临着保存数据的需求。随着支持 Internet 或 Web 的应用程序的增长,这种需要变得更加紧迫。常规专栏 “用 Apache Derby 进行开发 —— 取得节节胜利” 的这一期将介绍 Apache Derby —— 一个开放源码的、基于标准的、小内存占用的 Java 数据库系统 —— 把它与其他数据库系统进行比较,并讨论与它的下载和安装有关的问题。阅读完本文之后,就应当做好了开始用 Derby 开发数据库应用程序的准备。

Robert Brunner (rb@ncsa.uiuc.edu), NCSA 研究科学家,天文学助理教授, 伊利诺斯大学,Urbana-Champaign

2006 年 4 月 27 日

  • expand内容

Apache Derby 项目

本文是新的 “用 Apache Derby 进行开发 —— 取得节节胜利” 系列的第一篇,这个系列专门研究由 Apache Derby 项目开发的软件技术。Apache Derby 项目发布的软件是基于 IBM 赠给 Apache 软件基金会的技术基础上的开放源码数据库。Apache Derby 数据库软件是用 Java™ 编程语言编写的,所以是高度可移植的,但是在一个小小的包中仍然提供了可观的性能。

Derby 数据库也实现了许多数据库标准,所以如果有过数据库经验要开始使用 Derby,或者在需要的时候要把现有 Derby 数据库应用程序移动到其他符合标准的数据库系统,都会很容易。因为 Derby 正式发布还不到一年,所以有用的信息比较缺乏。IBM developerWorks 正在用大量 文章和教程 来填补这个空白。本系列针对的是数据库系统经验不多的用户。developerWorks Web 站点上的其他文章对 Apache Derby 数据库软件提供了更高级的介绍以及有关如何把它集成到 Java 企业软件栈中的信息。

为了符合本系列的精神,本文在详细讨论 Apache Derby 之前,首先简要介绍一下数据库系统。

数据库系统简要介绍

不论您是否意识得到,在 Internet 上冲浪时,其实是在与各种数据库支持(database-backed)的 Web 应用程序进行交互。这种说法可能还比较陌生,但它只是表示所访问的 Web 站点是用保存在数据库中的数据动态生成的。为了演示,请考虑以下可能访问的 Web 站点类型:

  • 信息门户,例如 图 1 所示的 developerWorks 开放源码项目区
  • 追踪本地新闻或体育事件的报纸 Web 站点
  • 财经 Web 站点,例如银行或投资机构的站点,您用于监视自己的金融投资组合
  • 地图 Web 站点,用于查找驾车路线
  • 搜索引擎,可以找到有兴趣的 Web 站点,获得某个主题的更详细信息
图 1. developerWorks 开放源码项目区
developerWorks 开放源码项目区

点击查看大图

这些示例,每个都使用数据库动态地保存、查找和检索信息。在这些应用程序中,Web 站点从用户收集必要的信息(例如街道地址),查询应用程序数据库,并把请求的数据集合到一个合适的可视结果中。

许多这样的数据库系统都是又大又复杂 —— 试想一下要容纳用图片提供正确驾车路线所需要的全部地图信息!显然,保存数据,并让应用程序可以使用数据,是一项巨大的任务,这项任务已经被许多厂商解决了,其中 IBM 使用 IBM DB2®,Microsoft® 使用 Microsoft SQL Server。这些商业数据库系统提供了完整的、企业级的能力。所以,它们可以容纳海量数据,可以并发地与大量用户交互,能够在多个大型计算系统之间伸缩。

数据库角色

与您预期的一样,处理这些系统并不简单,而且它们运作起来也会很昂贵。从历史上看,操作这些数据库所需要的任务分成三类。虽然角色之间有时会有重叠,但它们各自的职责理解起来很容易:

  1. 数据库管理员(DBA) —— 负责数据库系统的整体操作,其中包括:底层硬件的选择和布置,数据库服务器的安装和优化(特别是在使用硬件的情况下),数据库服务器的日常操作,例如数据备份和恢复。
  2. 数据库开发人员 —— 负责实际运行的数据库,包括设计数据库、模式、表、表关系、索引,以及对查询进行优化。
  3. 数据库应用程序开发人员 —— 负责通过用数据库应用程序编程接口(API),例如 Java 数据库连接(JDBC)或开放数据库连接(ODBC),根据需要保存和检索数据,从而把应用程序代码与底层数据库集成在一起。

如果前面的讨论让您觉得有点害怕,那就对了 —— 操作数据库历史上来说一直都很难。为了理解为什么,我们详细地来看一个具体示例:在线银行。在连接到银行的 Web 站点时,要提供凭证(最常见是用户名和口令),然后获得对财务帐户的访问。可以查看数据、支付帐户、转移资金。银行使用的数据库必须迅速地找到相关信息,安全地管理交易、安全地与用户交互,而最重要的是不能丢失任何数据!并且银行必须要同时为大量用户做这件事。

但并不是所有的应用程序都这么严格要求,特别是刚开始设计的应用程序。如果只是学习使用数据库,或者只想快速地实现数据库应用程序的原型,那么大多数商业数据库系统可能过于笨重。幸运的是,用 Apache Derby 数据库开发支持数据库的应用程序要比想像的简单。本文其余部分,将提供对 Apache Derby 项目的基本介绍。未来的专栏文章会演示如何用 Apache Derby 数据库构建数据库应用程序。

什么是 Apache Derby 项目?

Apache Derby 项目的目标是构建一个完全用 Java 编程语言编写的、易于使用却适合大多数应用程序的开放源码数据库。可以想像,开发一个数据库并不简单,Apache Derby 数据库也不例外(因为它是个开放源码软件,所以您可以自行查看它)。但是 Derby 项目并不是从零开始的。回到 1996 年,一个叫做 Cloudscape, Inc 的新公司成立了,公司的目标是构建一个用 Java 语言编写的数据库服务器。公司的第一个发行版在一年之后推出,后来产品的名称变成 Cloudscape。1999 年,Cloudscape, Inc. 被大型数据库厂商 Informix Software, Inc. 收购。Informix Software 在 2001 年又被 IBM 收购,然后 IBM Cloudscape™ 数据库系统在许多 IBM 的产品中被用作内嵌的数据库引擎。2004 年 4 月,IBM 把 Cloudscape 数据库软件赠送给 Apache 软件基金会,从此 Apache Derby 项目诞生了(参见 图 2)。

图 2. Apache Derby 项目的 Web 站点
Apache Derby 项目的 Web 站点

这时,Cloudscape 数据库几乎已经有了 50 万行 Java 代码,所以花了一些时间才正确地把它转换成 Apache Derby 项目。经过孵化期之后,Derby 于 2005 年 7 月正式发布。所以虽然看起来像是新事物,但是 Derby 背后已经开发了几乎十年了。

IBM 继续管理 Cloudscape 数据库,该数据库是从 Apache Derby 源代码构建的。IBM 把 Cloudscape 数据库作为免费下载提供,而且为需要增强信心的客户提供收费的咨询服务。另外,Sun Microsystems 已经宣布它将包含一个修补过的 Apache Derby 版本作为它的 Java 数据库产品。来自 IBM 和 Sun 的强大投入,强化了 Apache Derby 数据库的光明前景。Derby 数据库也符合许多数据库标准,例如 SQL-92 和 JDBC 3.0 版本,所以开始用 Derby 数据库系统开发的应用程序可以容易地移植到其他数据库系统,例如 IBM DB2 通用数据库™。

Apache Derby 数据库概述

Apache Derby 是用 Java 语言编写的,所以可以在任何存在合适的 Java 虚拟机(JVM)的地方运行。这意味着 Derby 实际上可以在任何操作系统上运行,包括 Microsoft Windows®、Macintosh、Linux® 和 UNIX® 平台。Derby 也可以在三个 Java 平台的任何一个上运行:Java 2 Platform, Micro Edition (J2ME)、Java 2 Platform, Standard Edition (J2SE) 和 Java 2 Platform, Enterprise Edition (J2EE)。Derby 软件绑定在 Java 档案(JAR)文件中,只有 2 MB 大小。由于内存占用这么小,所以 Derby 数据库可以容易地与应用程序绑定在一起。

可以用两种方式使用 Derby 数据库:

  • 作为内嵌的数据库,用户并不知道数据库的存在。应用程序使用数据库,二者在同一个 JVM 中运行,而数据库把数据保存在本地文件系统中。在内嵌模型中,数据库只与运行在同一 JVM 中的应用程序通信。
  • 作为客户机-服务器连接,是许多商业厂商使用的更传统的模型。在这种模型中,应用程序通过网络连接与数据库通信,应用程序和数据库分别在各自的 JVM 中运行。数据库服务器可以与多个客户机应用程序通信。

下载 Apache Derby

为了体会使用 Apache Derby 的简单性,最好的方式就是亲自试用它。本节其余部分提供了下载和验证 Apache Derby 版本的通用说明(请参阅参考资料 获得 Apache Derby 官方 Web 站点的链接,获得针对具体操作系统的说明)。这些说明假设已经在系统上安装了合适的 Java 运行时环境(JRE)。任何高于 1.3 版本的 JRE 都可以,但是本系列文章使用 Java 1.4.2 及以上版本。

这些准备条件就绪后,第一步是下载 Apache Derby。如 图 3 所示,可以下载三个不同版本:源代码、库和二进制。源代码版本就是源代码。要使用这个版本,必须编写源代码并构建自己的 .jar 文件。库版本只包含 Derby 数据库必要的 .jar 文件。二进制版本包含 .jar 文件和 Derby 文档。

为了简单起见,请下载二进制版本。请确保验证下载的完整性;包括验证 PGP(Pretty Good Privacy)签名,它可以保证下载的是正式版本,还要验证 MD5(消息摘要算法 5)签名,它可以保证下载的文件没有破坏。

图 3. 下载 Apache Derby 数据库
下载 Apache Derby 数据库

安装 Apache Derby

在成功下载并验证了包含 Derby 数据库文档的档案之后,安装非常简单(虽然有轻微的平台依赖性):

  1. 选择合适的位置,例如在 Windows 系统上的 C:\Apache 或在基于 Unix 的系统上 的 /opt/Apache。
  2. 打开终端窗口(在 Windows 上是命令提示符),转换到这个新目录,展开包含 Derby 数据库的档案。这么做之后,会创建一个新目录,目录名与安装的 Derby 数据库版本对应,例如 db-derby-10.1.2.1-bin。
  3. 把 Derby .jar 文件添加到 CLASSPATH 环境变量。如果习惯使用命令提示符,也可以直接把 derby.jar(位于 db-derby-10.1.2.1-bin/lib 子目录)添加到 CLASSPATH 变量。另外,也可以运行 db-derby-10.1.2.1-bin\frameworks\embedded\bin 子目录中提供的 setEmbeddedCP 脚本。在运行这个脚本之前,或者应当设置 DERBY_INSTALL 环境变量,或者修改脚本,以便 DERBY_INSTALL 指向安装 Derby 数据库的目录。
  4. 用 sysinfo 工具验证安装,如 清单 1 所示。
清单 1. 用 sysinfo 测试 Derby 安装
rb$ java org.apache.derby.tools.sysinfo
------------------ Java Information ------------------
Java Version:    1.4.2_09
Java Vendor:     Apple Computer, Inc.
Java home:       /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home
Java classpath:  /opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar:/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar:.
OS name:         Mac OS X
OS architecture: ppc
OS version:      10.4.3
Java user name:  rb
Java user home:  /Users/rb
Java user dir:   /opt/Apache/db-derby-10.1.2.1-bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.4
--------- Derby Information --------
JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - (330608)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------

这时,就有了一个可工作的数据库系统,既可以作为独立的网络服务器运行,也可以作为内嵌的数据库在自己的应用程序中运行。未来的专栏文章会介绍如何在这两种模型下运行 Derby,并提供附加的数据库深入介绍。

使用 Apache Derby

使用数据库系统并不很难。使用 Apache Derby,可以迅速地开始使用特性齐全的数据库系统。而且因为 Apache Derby 是符合标准的数据库,所以在情况许可的时候,用它开发的应用程序可以容易地迁移到更强大的数据库系统上。

这篇关于用 Apache Derby 进行开发 —— 取得节节胜利: 介绍 Apache Derby的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538290

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage