日期:2014-05-16  浏览次数:20448 次

java Derby 介绍

?

一、Derby数据库介绍

Apache Derby是一个完美的,100% Java编写的内存数据库,属于Apache的一个开源项目。并且是一个容易管理的关系数据库管理系统,可以和一些商业产品的特性进行交付。

Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。

与其他难以部署的数据库不同,Derby数据库体积小、安装非常简单,只需要将其*.jar 文件复制到系统中并为用户的项目添加该*.jar 文件即可。

另外在MyEclipse中集成了Derby数据库的插件应用,并且Derby还提供了Eclipse的插件供开发人员使用。

尽管 Derby 很容易安装,但是它的特性却非常丰富。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式等。一部分的列表特性使Derby从其他的Java 关系数据库管理系统中分离出来,包括:?

? ? ? ? ?100% Java实现?

? ? ? ? ?100% Java类型4 JDBC驱动?

? ? ? ? ?SQL92E标准支持大部分SQL 99特性?

? ? ? ?ACID完全的事务独立的事务支持?

? ? ? ? ?J2EE支持JNDI,连接池和XA?

? ? ? ? ?视图,临时表和保存?

? ? ? ? ?BLOB和CLOB数据类型?

? ? ? ? ?行和表锁定?

? ? ? ? ?有价值的基本查询优化?

? ? ? ? ?服务器端指示约束?

? ? ? ? ?触发器和存储过程?

? ? ? ? ?为服务器端函数,触发器或存储过程等操作在数据库里存储Java代码?

? ? ? ? ?能排除CD-ROM里的只读数据库?

? ? ? ? ?数据的导入和导出?

? ? ? ? ?快速数据库加密选项

二、Derby数据库的两种运行模式

1) 内嵌式模式(embedded mode)。Derby数据库与应用程序共享同一个JVM,应用程序会在启动和关闭时分别自动启动或停止关系引擎。Derby包的derby.jar文件包含了Derby 数据库引擎和嵌入式JDBC驱动程序;

2) 网络服务器模式(network server mode)。Derby数据库独占一个JVM,做为服务器上的一个独立进程运行。在这种模式下,允许有多个应用程序来访问同一个Derby数据库。Derby的derbynet.jar文件包含了Derby Network Server。

三、可以从许多技术方面来区分Derby和其他数据库系统

Derby易于管理。当嵌入到客户机应用程序中时,Derby系统不需要任何管理干预。

Derby是可嵌入的。应用程序可以将数据库管理系统(Database Management System,DBMS)引擎嵌入应用程序进程中,从而无需管理单独的数据库进程或服务。

通过网络服务器(Network Server)架构或您选择的服务器架构,可以将Derby作为单独的进程来运行。

Derby是一个纯 Java 的类库:对于 Java 开发人员,这点十分重要,因为他们正试图维护 Java 技术的优点,例如平台无关性、易于配置以及易于安装。

Derby不需要专有的 Java 虚拟机(Java Virtual Machine,JVM)。因为完全是用 Java 语言编写的,所以它适应所有合格的 JVM。

DerbyDBMS 引擎是轻量级的。类文件大小大约是 2MB,并且只使用了 4MB 的 Java 堆。

Derby支持使用 Java 编写存储过程和函数,这些存储过程和函数可以在应用程序的任何层上运行。Derby没有专用的存储过程语言,它使用 JDBC。

四、Derby数据库的优缺点

1、Derby定位是小型数据库, 特别是嵌入式. 支持的数据库小于50GB, 对于小型网站, 事务不复杂的应用, 使用它的还是很不错的. 另外大型桌面应用也可以用它来保存配置和其他数据, 可以做到与文件格式无关, 因为都是访问数据库.

2、功能: Derby支持标准SQL92, SQL1999, SQL2003, 支持临时表, 索引, 触发器, 视图, 存储过程, 外键, 约束, 并行, 事务, 加密与安全等. 只要有JDK(>=1.3), 就可以运行Derby.

3、安全性:Derby的安全性也做得很到位, 包括用户鉴权和加密解密.

4、性能:Derby的性能也是不错的.在插入100万条记录时, CPU的占用率一直低于40%, 平均每插一条记录耗时小于0.3毫秒. 这对于满足桌面应用程序是绰绰有余的. 但是比Oracle、MySql等专业数据库性能要低。

?

?

?

?

?

?

?

1)JDK6包含了一个轻量级的数据库,称为Derby,它属于Apache数据库项目的产品。Derby是基于事务型的关系数据库,在磁盘上占用空间极少。

2)Derby被缺省安装到“安装目录/db”,包含了核心库,示范程序和一个数据库例子。其基本大小仅为2MB。

3)Derby数据库的管理极其简单,它加速了开发和部署的过程,因为其数据库存储是放在JAR文件中的,通过JAR包就发布了。

4)Derby随着JDK6的安装而自动安装。Derby提供了一个命令行工具称为ij,它是交互式JDBC脚本工具的缩写(interactive JDBC scripting tool)。此工具提供了一种方式连接和操纵数据库。

5)要使用Derby,必须在CLASSPATH中包含这个工具,如下:

c:/Program Files/Java/jdk1.6.0/db/derby.jar

c:/Program Files/Java/jdk1.6.0/db/derbytools.jar

在derby.jar文件中包含由JDBC驱动;在derbytools.jar中包含由ij工具。

6)在完成CLASSPATH配置后,要运行ij工具并连接数据库例子,如下:

c:/>java org.apache.derby.tools.ij

ij version 10.2

ij>connect 'jdbc:derby:c:/Program Files/Java/jdk1.6.0/db/demo/databases/toursdb';

ij>

注意:最后的分号不能省略。

7)建立新数据库,如下:

ij>disconnect; ?//必须先断开已有数据库的连接

ij>connection 'jdbc:derby:MyDB;create=true'; ?//必须用创建参数create=true

如上,建立了名为MyDB的数据库。

8)如下的例子,建立数据库,建立表,插入数据,并且浏览它。

ij>create table zipcodes(zipcode varchar(5), city varchar(20), state varchar(2));

0 rows inserted/updated/deleted

ij>insert into zipcodes values('22030','Fairfax','VA');

1 rows inserted/updated/deleted

ij>insert into zipcodes values('22003','Annandale','VA');

1 rows inserted/updated/deleted

ij>insert into zipcodes values('90210','Beverly Hills','CA');

1 rows inserted/updated/deleted

ij>select * from zipcodes;

......

9)Derby中每个数据库的日志记录保存在其下的一个文件中,不管是否有多人对其进行操作。

10)最后以一个例子来结束本题。

用ij执行下面的语句:

connect 'jdbc:derby://localhost: