用 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

相关文章

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(