?
一、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: