前言: 本篇是derby系列的第4篇(0-3),描述Apache Derby的3个重要组成。
组成1. Apache Derby Database Engine,数据库引擎。
数据库引擎是Derby的核心,就如汽车飞机的发动机一样。Derby的数据库引擎提供了强大丰富的数据库功能,在上一篇已经列举了。
同时,由于用Java写成(derby.jar),derby的database engine可以很容易地嵌入到Java应用中,给Java应用开发带来了灵活性。
Derby数据库引擎的嵌入式用法,要求应用程序和derby engine处于同一个JVM中,随着应用程序的运行,JVM同时加载Derby engine。
当应用程序的宿主JVM终止时,Derby engine也随之shutdown。
(X) 一个常见的误解是,认为嵌入式使用Derby时,只能单用户访问,只支持单连接。
(Y) 只要在和Java应用的同一个JVM内,可以有任何多个用户连接。因为JVM支持多线程,运行Derby引擎的JVM内的任何线程,都可以并发的访问derby 数据库。
|
组成2. Apache Derby Network Server,网络服务器。
在Derby数据库引擎基础上提供的传统client/server方式应用。应用程序和derby 运行在不同进程,不同JVM中,甚至不同物理机器。
客户端程序可以通过TCP/IP协议访问Server.
在运行Derby的JVM进程之外的其他进程(同一个物理机器或者不同机器),访问derby 数据库,都需要加载使用Derby Network Server.
Derby Network Server 允许JVM进程间的通信,不仅仅是不同的机器之间,也包括意图访问同一个derby 数据库的同一机器上的不同JVM进程之间的通信。
Derby数据库引擎自带了一个JDBC driver(Apache Derby Network Client),用来应用Apache Derby Network Server功能。
启动或关闭derby network server, 需要在classpath环境变量中包含如下jar 件 。
|
组成3. Apache Derby JDBC Scriping Tool -- ij 工具。
ij, 是Derby 提供的基于JDBC的脚步工具,可以通过它执行SQL语言脚本和语句,完成derby 数据库操作。
(X)使用ij的一个常见错误和上面提到的JVM 进程通信有关。一个嵌入式Derby 数据库引擎的Java应用运行中,如果要使用ij进行数据库数据操作,需要加载by Network Server.
否则会出现访问错误。因为ij 是一个java应用,他运行在自己的JVM进程之中。
// ij 的一个例子,创建MyDbTest数据库 java org.apache.derby.tools.ij ij> connect 'jdbc:derby:/home/bill/databases/MyDbTest; create=true' ij> ij> create table derbyDB(num int, addr varchar(40)); ij> insert into derbyDB values (1956,'Webster St.'); ij> insert into derbyDB values (1910,'Union St.'); ij> update derbyDB set num=180, addr='Grand Ave.' where num=1956; ij> select * from derbyDb; ij> disconnect; ij> exit; |
总结:
理解Derby的嵌入式和网络服务器两种框架结构十分重要,在后续篇幅中将会进一步详细阐述。
掌握Apache Derby自带的tools,对于应用derby也十分有用。最常用的工具包括ij, sysinfo,dblook.
下一篇内容将涉猎Derby数据库的结构,文件系统等内容,也包括ij的一些用法,内容较多,计划2008/12/30日前完成。