打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Cloudscape数据库介绍及几个问题
一、Cloudscape数据库
Cloudscape数据库是J2EE自带的RDBMS数据库管理系统。它提供了所有大型数据库管理系统的大部分功能,为J2EE的初学者提供了较好的数据环境。

Cloudscape™ 是一种占用内存少、多用户、标准驱动的关系数据库系统,它完全用 Java™ 编写,适合嵌入到 Java 应用程序和服务器中。Cloudscape 可以在任何功能完备的 JVM 上运行,因此同一个 Cloudscape 应用程序不必修改就能在多种硬件平台上运行。

Cloudscape 支持 SQL-92E (entry) 标准和 SQL-99 的一部分,是基于 Java 和 SQL 的关系数据库管理系统(ORDBMS),Cloudscape 使用的 API 是 JDBC。 它无需进行管理(零管理),而且无需在应用程序之外安装和管理数据库。“安装后就忘掉”,这是成功的可嵌入式组件的重要设计目标。 Cloudscape 是作为 Java 类库实现的关系数据库管理引擎。应用程序可以通过 JDBC API 访问 Cloudscape 引擎管理的数据。

简单说,Cloudscape 是一个 Java 类库,可以很容易地将它嵌入到任何 Java 应用程序或服务器架构中,同时还不会损害该应用程序的 Java 特性。当需要扩充数据库时,Cloudscape 支持复杂 SQL 事务和 JDBC,该特性允许它将应用程序迁移到其他 SQL 数据库,例如 IBM DB2® Universal Database™(UDB)。

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

Cloudscape 易于管理。当嵌入到客户机应用程序中时,Cloudscape 系统不需要任何管理干预。
Cloudscape 是可嵌入的。应用程序可以将数据库管理系统(Database Management System,DBMS)引擎嵌入应用程序进程中,从而无需管理单独的数据库进程或服务。
通过网络服务器(Network Server)架构或您选择的服务器架构,可以将Cloudscape 作为单独的进程来运行。
Cloudscape 是一个纯 Java 的类库:对于 Java 开发人员,这点十分重要,因为他们正试图维护 Java 技术的优点,例如平台无关性、易于配置以及易于安装。
Cloudscape 不需要专有的 Java 虚拟机(Java Virtual Machine,JVM)。因为完全是用 Java 语言编写的,所以它适应所有合格的 JVM。
Cloudscape DBMS 引擎是轻量级的。类文件大小大约是 2MB,并且只使用了 4MB 的 Java 堆。
Cloudscape 支持使用 Java 编写存储过程和函数,这些存储过程和函数可以在应用程序的任何层上运行。Cloudscape 没有专用的存储过程语言,它使用 JDBC。
Cloudscape 与其他的关系数据库系统类似。它实现了 SQL92E 语言标准和 JDBC API 标准。Cloudscape 也有事务(提交和回滚),能够通过事务隔离支持多个连接,并提供了崩溃恢复。与其他数据库一样,它允许多个线程共享同一连接,而且,随着对 Java 技术进行扩展,Cloudscape 也实现了许多 SQL99 特性。

这种技术功能的独特组合允许应用程序开发人员构建数据驱动的应用程序,这些应用程序是普遍的(到处运行)、可部署的(可下载的)、可管理的、可扩展的和可连接的。

reference http://www-106.ibm.com/developerworks/cn/db2/library/techarticles/dm-0408anderson/

http://www-106.ibm.com/developerworks/cn/db2/library/techarticles/dm-0408anderson2/index.html

http://www-106.ibm.com/developerworks/cn/db2/library/techarticles/dm-0408bradbury/index.html

二、Derby数据库
IBM® 在旧金山的 LinuxWorld 宣布正在将 Cloudscape™(一种纯关系 Java™ 数据库)作为开放源代码发布给 Apache Software Foundation (ASF),后者已为其建立了一个名为“Derby”的孵化器项目。这是继 IBM 向开放源代码社区作出一系列承诺以来的最新承诺。

  据悉,IBM为ASF提供的“Derby”软件是IBM公司前Cloudscape关系数据库产品的一部分,此举旨在激发负责Java应用开发的社团的创新。

IBM希望借助这次捐助活动提高使用Derby软件进行Java开发的速度,为开发商和客户开发基于Java的嵌入式数据库功能提供新的选择。到目前为止,IBM已经雇佣了将近4000名Java专业人员,并提供100多种Java驱动的产品和解决方案。

Derby是一套基于Java的关系数据库,可完全嵌入而无需管理支持的2MB容量。同时,它还是开发商的理想软件,在无需企业级数据库系统的情况下,开发人员使用该软件能够方便地构建和部署应用和工作负载。

为了弄清楚更多关于这种数据库的问题,以及这种数据库如何融入到 IBM 的战略和 Java 应用程序架构中去,Jon Prial -IBM 副总裁接受了有关方面的专门采访,以下为访谈的部分内容。

问: 在 LinuxWorld 上,IBM 宣布将 Cloudscape 贡献给 Apache Software Foundation。那么,什么是 Cloudscape?

答:Cloudscape 是一种基于 Java 的、具有全面事务支持能力的关系数据库技术。它是一种纯嵌入式数据库,可以用在应用程序中,也可以作为更传统的客户机-服务器应用程序的数据库。它体积小,而且不需要数据库管理员;您只需编写应用程序。在需要时直接调用数据库,Cloudscape 就可以为您服务。

问: 开放源代码版本与 IBM 的商业版本之间有什么不同?

答:我们已经把 Cloudscape 的代码献给了 Apache Software Foundation [ASF]。在 Apache 中这个项目叫做“Derby”,IBM Cloudscape 的未来商业版本都将以 Derby 代码为基础。

Derby 是一个孵化器(incubator)项目,这也是外部项目成为 ASF 一部分的一种常见的方式。但是开发人员如今可以在 Apache 的许可下为 Derby 代码作出贡献,或者下载 Derby 代码,我们正在积极地与我们的合作伙伴以及 Apache 合作,以发展和形成致力于 Derby 项目的社区。

对于我们的 Cloudscape 项目,IBM 搬用 Derby 代码,并作为 IBM Cloudscape offering 提供完全支持。您也可以免费下载 IBM Cloudscape 代码,并且可以从 IBM 那里购买对它的支持,但我们并不打算收取 Cloudscape 的许可费。

问: 为什么 IBM 决定公开 Cloudscape 源代码?

答:通过将 Cloudcape 开放源代码,IBM 希望加快基于 Java 的应用程序的开发,并带动 Linux 和 Java 方面的更多革新。所以,扩大这方面的市场就等于扩大高价值的 IBM 中间件、硬件和服务方面的市场。我们认为这样做尤其可以在嵌入式数据库应用程序、小型企业解决方案以及基于 Java 和基于 Web 的应用程序等领域开辟新的商机。

开发人员能识别好的代码。当我们从 Informix® 取得 Cloudscape 代码时,我们内部的开发社区便开始谈论它,并做一些工作。实际上,至今在 IBM 中已有 70 个项目在他们的 offering 中使用 Cloudscape -- 其中有很多项目已发布到市场,例如 WebSphere® Application Server、WebSphere Portal 和 IBM Workplace。所以,我们知道我们有一项有趣的技术,而这项技术可以成为 Java 架构的一部分。我们看到 Java 数据库和 Apache 正在做的 Java 工作之间有关联,并且认识到这是一个巨大的项目,适合开放源代码来做。

现在,IBM 对开放源代码社区有一个长期的承诺。我们之所以有能力建立那样的关系,部分原因就在于我们知道不是为了开放源代码而开放源代码,而是开放源代码可以使事情变得更容易。

IBM 知道必须找到正确的方式来建立社区和鼓励革新,而我们也用了很多不同的方法,例如支持 Eclipse.org 的创建。通过与 Apache 合作,我们可以为使用 Derby 并帮助使其变得更好的开发人员们建立一个社区。实际上,我们希望看到 Derby 数据库变得和 Apache HTTP 服务器一样无所不在。

问: 使用 Cloudscape 可以做哪些事情呢?

答:Cloudscape 最有趣的一个用法就是作为一个 Java 数据存储,直接将数据库输入到 Java 应用程序中。我曾提到过,Cloudscape 数据库非常小。它只是一个 2MB 的 .jar 文件。有了这样一个 Java 数据库,当一个 Java 应用程序想要使用它时,根本不需要做任何工作,不需要进行任何管理。Java 应用程序只需发出 JDBC 调用,然后访问数据,之所以可以这样做,是因为数据库自始至终都是以一个 .jar 文件的形式存在。

Cloudscape 技术实际上非常通用 ― 我认为,认识到其他类型的应用程序在这里也可以使用是很重要的。我曾提到过,IBM Workplace 在客户端使用 Cloudscape,以便将数据自动复制回服务器。我们在 LinuxWorld 提供了 "IBM Workplace Data Access" 可编写脚本桌面数据库的技术预览 ― 这是一种用于创建客户端数据库、查询和报表的商业用户工具。

人们可以使用 Cloudscape 网络服务器特性,将其当作基于服务器的数据存储来访问。因此,虽然我们原本期望看到围绕 Java 应用程序的大多数初始用法,但实际上 Cloudscape 还可以用作客户机-服务器数据库。

问: IBM 将提供哪些类型的 Eclipse 工具?

答:我们拥有一些用于 Eclipse 的插件,通过这些插件可以访问数据库。此外,我们还为那些使用 Cloudscape 并希望迁移到企业级的数据库的人们提供了工具。例如,他们可以从 Cloudscape 移植到 DB2®。

问: 您提到了 "IBM Workplace Data Access"。可以谈得更详细一点吗?

答:IBM Workplace Data Access 是商业用户用于创建和查询运行在不同桌面环境(包括 Windows® 和 Linux)上的数据库应用程序的一种工具。我们使用 Eclipse 框架开发 GUI,用 Cloudscape 作为底层数据库。

我们认为 IBM Workplace Data Access 将可以独自开辟新的机遇。但它也是将轻量级、跨平台的数据库(例如 Cloudscape 或 Derby)与用于应用程序开发的跨平台客户端框架(例如 Eclipse)相结合的一个伟大的典范。

问: Cloudscape 在 DB2 数据库系列中处于什么样的地位?

答:Cloudscape 能满足新的和正在增长的市场的需求。作为面向 Java 的数据库,Cloudscape 的定位非常恰当,它很好地弥补了我们的其他数据库:DB2 Universal Database™、Informix Dynamic Server、DB2 Express 等等。又因为它是建立在开放标准基础上的,任何针对 Cloudscape 编写的应用程序都可以很容易地迁移到 DB2 UDB 和其他数据库上运行,这正是企业级的解决方案所需要的。

问: Derby 与其他开放源代码数据库有什么不同?

答:没有哪种开放源代码数据库像 Derby 这样适合扩展 Java 架构,并带动整个社区的革新。IBM 非常注重满足这一需求。我们曾看到其他公司仅仅做到数据库源代码开放,根本没有提供可行的计划来建立社区。很多开放源代码数据库都有许可限制,有时候 ISV 实际上不得不为取得重新发布开放源代码数据库的权利而付出代价。而且有时候这些数据库并不完全是关系型数据库或事务处理数据库。

所以,与其他开放源代码数据库相比,Derby 是独一无二的。它的确是功能丰富的关系型数据库。而且,它完全是免费提供的,没有商业许可限制。

问: 您还有什么要补充吗?

答:Cloudscape 技术是 IBM 更大型数据产品战略的一个扩展。我们的想法是集成各种不同的数据存储 ― 从 zSeries® 到普适(pervasive)设备 ― 以支持来自 IBM 和非 IBM 数据源的结构化的和非结构化的数据。我们认为信息集成是将这些维系在一起的关键,而我们的 DB2 产品为客户提供了实现这一点的框架。

公共的、一致的用于访问信息的框架使人们可以做更多的事情 ― 利用数据,收集更多洞察力,以及成为更能随需应变的企业。我们看到 Cloudscape 正是其中的关键部分。


cloudscape 使用入门
一、配置Cloudscape数据库{未验证}
1.        安装j2eesdk1.3.1或者j2ee的更高版本。软件可以到sun的网站上去找http://java.sun.com/j2ee。注意:若j2ee安装后目录下并没有cloudscape子目录,则参见下文的- derby数据库安装
2.        在环境变量里配置J2EE_HOME。J2EE_HOME=j2ee的安装目录,例如c:\j2sdkee1.3.1。
3.        在环境变量里的path里加入%J2EE_HOME%\bin

二、启动Cloudscape
在J2EE的安装目录下,有cloudscape子目录,这就是Cloudscape数据库的主目录。在这个目录下面的CloudscapeDB目录是存储数据的目录。

1.        启动Cloudscape
在DOS窗口中输入"cloudscape -start",可以启动Cloudscape。说明:DOS窗口目录需为j2ee的bin目录下。

C:\>cloudscape ?Cstart
启动cloudscape数据库,成功启动后出现如下信息:
Fri Jul 16 21:24:27 CST 2004: [RmiJdbc] Starting Cloudscape
RmiJdbc Server Version 1.7.2...
Fri Jul 16 21:24:29 CST 2004: [RmiJdbc] COM.cloudscape.core.
JDBCDriver registered in DriverManager
Fri Jul 16 21:24:29 CST 2004: [RmiJdbc] Binding RmiJdbcServer...
Fri Jul 16 21:24:29 CST 2004: [RmiJdbc] No installation of
RMI Security Manager...
Fri Jul 16 21:24:29 CST 2004: [RmiJdbc] RmiJdbcServer bound
in rmi registry

2.        停止Cloudscape
在DOS窗口中输入"cloudscape -stop",可以停止Cloudscape。

C:\>cloudscape -stop
URL=[jdbc:rmi:jdbc:cloudscape:]
Attempting to shutdown RmiJdbc server
RmiJdbc Server RmiAddr is: //stere/RmiJdbcServer
WARNING: Shutdown was successful!

3.        进入Cloudscape数据编辑器
在DOS窗口中输入"cloudscape -isql",可以进入Cloudscape数据编辑器。

C:\>>cloudscape -isql
ij version 4.0 (c) 1997-2001 Informix Software, Inc.
WARNING 01J01: Database ‘CloudscapeDB‘ not created,
connection made to existing database instead.
CONNECTION0* - jdbc:cloudscape:CloudscapeDB;create=true
* = current connection
ij>

在"ij>"提示符下,可以使用常用的SQL语句创建、删除、修改数据表和数据表中的记录。

创建emp数据表:
create table emp
(emp_id integer,emp_name varchar(32),emp_birthdate date);

向emp数据表中插入记录:
insert into emp values ( 1, ‘Kevin Allen‘, ‘1965-2-20‘ );
insert into emp values ( 2, ‘Jean Doyle‘ , ‘1978-4-4‘ );
insert into emp values ( 3, ‘Lynn Dennis‘, ‘1975-5-15‘ );

4.        Cloudscape数据编辑器中的命令
Cloudscape数据编辑器提供一组特殊的管理命令。

退出Cloudscape数据编辑器:
exit;

运行SQL脚本文件:
run ‘c:\sqldemo.sql‘;

可以通过"help;"命令,获取所有Cloudscape数据编辑器命令的信息。

5.        如何调出cloudscape数据库的图形管理界面及相关问题
在命令行方式下敲入java COM.cloudscape.tools.cview很可能会出现错误。

什么原因呢?第一、你要看看你的jdk版本对不对,是不是1.3.1_02以上或者1.4的。第二、关键中的关键,原来sun的j2ee里的cloudview是不能在他附带的cloudscape4.0.6下工作的。

这里是在ibm网站上的一句原话:The Java 2 SDK, Enterprise Edition v. 1.3.1 includes Cloudscape 4.0.6 but includes a version of Cloudview which will not function with the 4.0.6 system。所以同志门就自己去下一个吧!

常见错误:java.lang.ClassNotFoundException: COM.cloudscape.core.JDBCDriver
英文解释:
To "find" the missing driver, you need to add to the CLASSPATH the cloudscape jar files RmiJdbc.jar , cloudclient.jar and system/cloudscape.jar which are located  under the directory %J2EE_HOME%\lib\cloudscape\
So, under UNIX you should execute:
setenv CLASSPATH .:$J2EE_HOME/lib/cloudscape/system/cloudscape.jar:$J2EE_HOME/lib/cloudscape/cloudclient.jar:$J2EE_HOME/lib/cloudscape/RmiJdbc.jar

under Windows, you should add to CLASSPATH the following
%J2EE_HOME%\lib\cloudscape\system\cloudscape.jar;%J2EE_HOME%\lib\cloudscape\cloudclient.jar;%J2EE_HOME%\lib\cloudscape\RmiJdbc.jar

If you will, you can also look at "cloudscape" command (cloudscape.bat under Windows) what jar files it adds to its classpath.

We‘d like also to give you a hint regarding missing classes. If some class cannot be loaded, even though it should be somewhere, this indicates that the class is not "visible" in classpath for a class loader. To find the class, you should inspect JAR files under lib directory of a Java environment by using "jar -tvf file.jar" or WinZip. For example, to find the driver under UNIX one should execute in the directory $J2EE_HOME/lib/cloudscape/system/ the following
jar tvf cloudscape.jar | grep JDBCDriver

In particular , the driver class COM.cloudscape.core.JDBCDriver is packaged in %J2EE_HOME%\lib\cloudscape\system\cloudscape.jar
(under UNIX in $J2EE_HOME/lib/cloudscape/system/cloudscape.jar)

中文解释:
重点是设置对RmiJdbc.jar , cloudclient.jar and system/cloudscape.jar

几点注意的地方:
1.        修改完resource.properties,需要重起j2ee server
2.        使用cloudview时,cloudscape数据库必须关闭,设置完以后再重起数据库
3.        deploy修改默认SQL的时候,点画面左边的SQL名称,右边出现SQL文,修改完毕之后必须再点一下左边的这个SQL名称,这样表示更新了,如果直接去点别的SQL名称,就会乱掉。看到前面有的哥们儿说改一下就按一下OK,否则会乱,其实不必。
4.        不知道cloudscape数据库怎么样,反正Oracle中在SQL中不加""就会忽略大小写。比如:select * from employee where employeeID=‘123‘和select * from EMPLOYEE where EMPLOYEEID=‘123‘是一样的,但是deploy时默认的SQL中是有""的,这样select * from "employee" where "employeeID"=‘123‘就和select * from "EMPLOYEE" where "EMPLOYEEID"=‘123‘不一样了。前面有的朋友说字段大小写的问题估计就在此。
5.        deploy结束之后需要save,否则jsp中输入ID,点submit就会是白板一块。
三、开发第一个J2EE、配置J2EE环境及Cloudscape数据库
本部分将一步步教j2ee入门者配置出一个标准的j2ee环境,本人一步步自己摸索配置了j2ee的开发环境,到最后启动了cloudscape数据库的cloudview可谓很费周折,主要原因是没有仔细看说明。

首先,确认你下载了j2se1.3.1_02以上的jdk版本和j2sdkee.1.3.1。这些软件可以到sun的网站上去找http://java.sun.com/j2ee。 目前j2se的最高版本是j2se1.4。然后安装上述软件。我的安装目录是在H:盘。在安装之前如果你以前装有不同版本的jdk,请先卸载,然后再安装。安装好以后,请设置classpath.windows下的设置如下:
set JAVA_HOME=h:\jdk1.3.1.2
set J2EE_HOME=h:\j2sdkee1.3.1

set classpath=h:\jdk1.2.2\jre\lib\i18n.jar;
h:\jdk1.2.2\jre\lib\jaws.jar;
h:\jdk1.2.2\jre\lib\plugprov.jar;
h:\jdk1.2.2\lib\dt.jar;
h:\jdk1.2.2\lib\tools.jar;

h:\j2sdkee1.3.1\lib\ejb10deployment.jar;
h:\j2sdkee1.3.1\lib\j2ee.jar;
h:\j2sdkee1.3.1\lib\jhall.jar;
h:\j2sdkee1.3.1\lib\j2eetools.jar;
h:\j2sdkee1.3.1\lib;

注意:上面是我的机器上的目录,如果你安装在不同的目录上的话,请自行改变。

启动j2ee服务
安装、设置后,就可以顺利的启动j2ee,到h:\j2sdkee1.3.1\bin目录下执行j2ee.bat文件。打开浏览器敲入地址http://localhost:8000/index.html可以看到首页就说明对了。

启动j2ee自带的cloudscape数据库
这个也简单,把h:\j2sdkee1.3.1\lib\system\cloudutil.jar;
h:\j2sdkee1.3.1\lib\cloudscape\cloudclient.jar;
h:\j2sdkee1.3.1\lib\cloudscape\rmijdbc.jar;
h:\j2sdkee1.3.1\lib\system\cloudscape.jar;
加入就可以了,在命令行方式下到h:\j2sdkee1.3.1\bin目录下打cloudscape -start可以启动cloudscape数据库

关键的问题出在如何调出cloudscape数据库的图形管理界面!

你在命令行方式下敲入java COM.cloudscape.tools.cview一般都会出现错误。什么原因呢?第一、你要看看你的jdk版本对不对,是不是1.3.1_02以上或者1.4的。
第二、关键中的关键,原来sun的j2ee里的cloudview是不能在他附带的cloudscape4.0.6下工作的(真不知道sun在搞什么东东 :))

这里是在ibm网站上的一句原话:The Java 2 SDK, Enterprise Edition v. 1.3.1 includes Cloudscape 4.0.6 but includes a version of Cloudview which will not function with the 4.0.6 system。所以同志门就自己去下一个吧!这里还需要两个jar文件。下载cloudview.jar和jd.jar把这两个文件放在j2sdkee1.3.1下的cloudscape目录下,我这里还需要加两个classpaht路径
h:\j2sdkee1.3.1\cloudscape\cloudview406.jar;
h:\j2sdkee1.3.1\cloudscape\jh.jar

OK!一起大功告成!现在看看怎么启动cloudview,在命令行下键入

java -Dcloudscape.system.home=%j2ee_home%\cloudscape   COM.cloudscape.tools.cview

这里-Dcloudscape.system.home是设置数据库存放的路径,这个路径可以在建立数据库的时候改变
%j2ee_home%\cloudscape是cloudscape的默认工作目录
也可以将-Dcloudscape.system.home后的路径去掉,不过要记住,要将数据库建在改路径下,否则j2ee server找不到它!
好了,接下来你会发现一个图形界面起来了。

四、derby数据库安装{验证}
1.        该数据库可在IBM和Apache两处下载,cloudscape是derby数据库的商业版本,由IBM赠送与Apache后的称呼。

Apache一方目前版本是Derby 10.1.0.0 alpha (Apr 28, 2005 / SVN 165185)。由于alpha版,而且Derby 10.0.2.2 (Apr 28, 2005 / SVN 165169)版本的数据库提供的附加工具及少,所以我是去IBM网站下载的数据库。

IBM网站目前版本是V10.0.2.0  Build: 30301,提供3种类型的下载,有installer的linux,win32和没有installer一个单一的zip包文件。win32中包括jdk1.4,考虑到我的机器已经被迫安装了n个jdk,故此我下载了单一zip包的cloudscape。

IBM下载地址为:
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0408cline/index.html,需要以自己的mail作为id注册一个用户才能下载。

2.        下载后运行java ?Cjar 10.0-IBM-Cloudscape.jar,出现安装界面,在这里需要指定安装目录,需要注意的是安装目录尽量不要带有空格。

3.        安装完后需要进行一些环境变量的设置,请根据自己的实际情况增加以下环境变量:

数据库安装目录环境变量:
CLOUDSCAPE_INSTALL= D:\IBM\Cloudscape_10.0

classpath中增加:
.;%CLOUDSCAPE_INSTALL%\lib\derby.jar;%CLOUDSCAPE_INSTALL%\lib\derbynet.jar;%CLOUDSCAPE_INSTALL%\lib\derbytools.jar;%CLOUDSCAPE_INSTALL%\lib\db2jcc.jar;%CLOUDSCAPE_INSTALL%\lib\db2jcc_license_c.jar
;CLOUDSCAPE_INSTALL%\lib\cloudview40.jar;CLOUDSCAPE_INSTALL%\lib\jh.jar;

path中增加:
%CLOUDSCAPE_INSTALL%\frameworks\NetworkServer\bin

4.        现在就可以对数据库进行操作。该数据库提供两种模式的数据库引擎:
(1. 服务器架构中充当客户机/服务器的引擎。
(2. 作为可嵌入类库的数据库引擎。在c/s引擎应该比较了解。可嵌入类库的数据库引擎就是和java程序运行在同一JVM中,不需要启动数据库,不需要对数据库进行管理(对这个我也知道个大概,呵呵)。

1.C/S模式下的数据库访问:
打开dos界面,敲入startNetworkServer启动数据库,再打开一个dos界面敲ij以进行数据库管理。
在D:\IBM\Cloudscape_10.0\demo\databases下有一toursDB的demo数据库,我们要连至该数据库我们可以在ij下敲入:
connect ‘jdbc:derby:net://localhost:1527/"D:\IBM\Cloudscape_10.0\demo\databases\toursDB"‘

例如以下我是对数据库的一些简单操作:
--连接数据库:(;不可少)
ij> connect ‘jdbc:derby:net://localhost:1527/"D:\IBM\Cloudscape_10.0\demo\databases\toursDB"‘;
--创建一个名为abc的表:
ij> create table abc (a int, b int);
0 rows inserted/updated/deleted
--往abc表中插入数据,没into还报错,用sybase用习惯了。
ij> insert abc values(1,2);
ERROR 42X01: DB2 SQL error: SQLCODE: -1, SQLSTATE: 42X01, SQLERRMC: Encountered "abc" at line 1, column 8?42X0(?代表一个怪字符,spaces上发布的时候提示“此空间暂时不可用”,没办法只好用?代替啦,发现问题浪费了我十几分钟时间,TNND)
--这次数据进去了
ij> insert into abc values(1,2);
1 row inserted/updated/deleted
--察看刚才插入的数据
ij> select * from abc;
A          |B
-----------------------
1          |2
1 row selected
--断开数据库连接,没有任何信息输出
ij> disconnect;
--退出ij
ij> exit;
注意命令结束符是分号“;”
如果要停止数据库在dos中敲入stopnetworkserver即可。

2.可嵌入类库模式下对DB的访问(该模式下不需要启动数据库,且ij中只能有一个连接操作数据库)
我的toursDB数据库目录为C:\IBM\Cloudscape_10.0\demo\databases下,如果我们DOS界面所在的目录已经在在该目录,则进入ij后直接敲入“connect ‘jdbc:derby:toursDB‘;”就可以连接至数据库,否则得指定数据库所在路径“connect ‘jdbc:derby:C:\IBM\Cloudscape_10.0\demo\databases\toursDB‘;”。下面是我对数据库的一些访问:
ij> connect ‘jdbc:derby:toursDB‘;
ij> select * from cities;
CITY_ID    |CITY_NAME     |COUNTRY     |AIRPORT                |LANGUAGE       |COU&
----------------------------------------------------------------------------------------------------------------
1          |Amsterdam               |Netherlands               |AMS                       |Dutch       |NL
……………………………等等
87 rows selected
ij> disconnect;
ij> exit;
C:\IBM\Cloudscape_10.0\demo\databases>
其中cities是toursDB数据库自带的一个表,其它的表还有airlines, countries,flightavailability,flights,flights_history,maps。

关于数据库的一些操作命令可在ij下敲入help;进行察看,详细的帮助信息在D:\IBM\Cloudscape_10.0\doc\pdf中,IBM的developerWorks下的DB2有很多介绍cloudscape相关技术的文章,网址:http://www-128.ibm.com/developerworks/cn/index.html。 还有IBM的在线帮助手册有3本是中文的,网址:
http://www.elink.ibmlink.ibm.com/public/applications/publications/cgibin/pbi.cgi?CTY=US&FNC=ICL,进去后选择cloudscape。

Cloudscape 常见问题
一般问题
问: 什么是 Cloudscape Version 10.0?
答: Cloudscape 是一种占用内存少、多用户、标准驱动的关系数据库系统,它完全用 Java 编写,适合嵌入到 Java 应用程序和服务器中。 Cloudscape 可以在任何功能完备的 JVM 上运行,因此同一个 Cloudscape 应用程序不必修改就能在多种硬件平台上运行。
Cloudscape 支持 SQL-92E (entry) 标准和 SQL-99 的一部分。 Cloudscape 使用的 API 是 JDBC。 它无需进行管理(零管理),而且无需在应用程序之外安装和管理数据库。"安装后就忘掉",这是成功的可嵌入式组件的重要设计目标。
问: 何为"嵌入(embedded)"?
答:按照 Merriam Webster OnLine Dictionary(http://m-w.com/)的定义:
em•bed•ded; em•bed•ding 及物动词
1 a : 紧紧地包围或者像在母体中那样 b : 使......成为整体的一部分 c : 通过渗透和固定在载玻片上准备(显微镜用样品)切片。
2 : 紧紧围住 不及物动词:被嵌入。
"嵌入式 Cloudscape"意味着没有单独的数据库服务器; Cloudscape 和 Java 应用程序是一起安装(jar 文件和数据库文件)的。它和应用程序在同一个 JVM 上运行,启动和关闭都由应用程序控制。终端用户无需关心应用程序中的数据库系统。其结果就是应用程序很容易部署,并且具有关系数据库系统的所有特性。
问:嵌入式 Cloudscape 是一种多用户数据库吗?
答: 是的,无论选择了什么样的部署选项,Cloudscape 都支持多用户访问。 Cloudscape 手册说明了如何在单用户应用程序中使用 CLoudscape。 Cloudscape 非常适合在这种结构中运行,但它本身并不是单用户的。多用户意味着在需要时,引擎可以管理多个独立的事务。 即使是在嵌入式部署环境中,Cloudscape 也支持多连接。每个连接代表一个单独的事务。这样就允许单个应用程序建立多个连接,从而执行多个独立的事务。每个连接可以规定 4 种事务隔离级别,以满足并发性的要求。关于事务隔离级别、并发和锁定类型的完整描述,请参阅 Cloudscape Developers Guide。

一定要注意的是,Cloudscape jar 文件中不含网络代码,再次声明,这并不意味着 Cloudscape 是单用户的,尽管有时候这样解释。在运行 Cloudscape 引擎的 JVM 之外进行通信(进程间通信)必须使用网络消息。两个独立进程间的通信称为客户机-服务器。为了满足客户机-服务器通信方式的需要,Cloudscape 提供了 Network Server 功能(在单独的 jar 文件中)。 Cloudscape 很容易嵌入 Network Server,以便在需要的时候提供客户机-服务器连接。 Cloudscape 也很容易嵌入其他很多服务器程序(如 WebShpere、Apache Tomcat 等),因此选择权在您手中。
问:为何 Cloudscape 不在其基本产品中提供 Client/Server 功能?
答: 很多应用程序完全在单个系统、单个进程中运行,不需要 Client/Server 功能。比如,存储输入到 Web 表单中的数据的 servlet,或者在 PC 上运行的地址簿应用程序,都不需要和其他进程通信。 Client/Server 代码只会增加这些应用程序的内存消耗,而没有其他任何用处。对于这类应用程序,Cloudscape 提供了关系数据库的所有便利,而没有增加不必要的网络代码。在需要的时候,可以通过运行 Network Server 或者其他服务器体系结构,随时添加 Client/Server 的功能。
安装
问:如何安装 Cloudscape 环境?
答: 安装非常简单,通过使用 Java 安装程序,安装完全是平台独立的(启动安装过程和指定文件路径的命令行语法仍然和平台有关)。 这里简要说明了如何使用 Java 安装程序进行安装,也可能提供用于特定平台的其他安装程序类型,关于使用平台专用安装程序的信息,请参阅 install.html 文件。
安装需要启动 JVM,而且需要在文件系统有足够的磁盘空间 ―― jar 文件需要 4 Mb 的磁盘空间;带有 javadoc 和例子的完整 Cloudscape 安装需要 24 Mb 的磁盘空间;完全安装 Cloudscape 和 IBM JRE 需要 64 Mb 的磁盘空间(仅用于 Windows)。这些数据不包括安装文件的大小。
在命令行提示符下,切换到包含 Cloudscape 安装文件的目录,通过下面的命令启动安装程序:
\java -cp. -jar
其中:
•        是 java.exe 文件的完全限定目录(通常用环境变量 JAVA_HOME 规定)。
•        是安装文件。
相应的提示:
•        第 1 屏:检查安装的产品是否正确,单击 Next。
•        第 2 屏:取消对复选框"Yes, I would like to read the release notes now"的选择。 单击 Next。
•        第 3 屏:查看许可证条款。如果接受,则选择 I accept the terms of the license agreement。 单击 Next。
•        第 4 屏:检查或输入完整的安装路径。 单击 Next。
•        第 5 屏:检查安装选项和需要的磁盘空间。单击 Next。
•        第 6 屏:单击 Next,然后单击 Finish。
配置/设置
问:Cloudscape 部署的基本组件有哪些?
答: Cloudscape 在应用程序中部署的主要组件包括 1) jar 文件, 2) 数据库文件和 3) Cloudscape 日志。所有 Cloudscape 部署中都有这些文件,而且,在进行任何数据库级操作或者调试之前,必须安装好它们。
在讨论任何 Cloudscape 部署时, Cloudscape System Home 的概念也很重要。 Cloudscape System Home 是创建所有文件的默认位置,也是存放数据库和 Cloudscape 日志的默认位置。如果没有通过属性 cloudscape.system.home 定义这个位置,那么运行 Cloudscape 引擎的 JVM 的当前工作目录将被默认为该位置。在产品部署中明确定义并记录 Cloudscape System Home 是谨慎的做法。在第一次连接到数据库(或者说启动 Cloudscape 引擎)之前,需要设置 cloudscape.system.home。
日志文件的默认名称为 cloudscape.log,但该文件名是可以配置的,有时候应用程序员也可以更改它。在默认情况下,该日志文件被写入 cloudscape.system.home,采用这一默认位置是一种谨慎做法。任何数据库级的调查/调试活动都需要该日志文件。为了进行 Cloudscape 部署,该文件的位置和名称必须是已知的。日志文件包含 Cloudscape 引擎启动的所有数据库列表和出现的错误(要记录其他消息,可以设置 cloudscape.stream.error.logSeverityLevel,请参阅 Cloudscape Tuning Guide"Cloudscape 属性"一章)。
数据库文件(如 c2a10.dat)和事务日志文件(如 log2.dat)位于主数据库目录的子目录下。主目录和数据库同名(如 toursDB)。 启动数据库需要知道数据库目录的路径。主数据库目录至少包含两个子目录:
•        ‘seg0‘ 包含数据文件。
•        ‘log‘ 包含事务日志文件。
一定不要直接存取这些目录中的任何文件。
cs.jar 文件包含运行 Cloudscape 引擎的代码。该文件必须位于类路径中,以便加载 Cloudscape 引擎和启动 Cloudscape 数据库。 Cloudscape 开发环境包含 Cloudscape 部署包中的其他可选 jar 文件。其中包括:
•        cstools.jar ―― 工具 ij 和 cslook。
o        ij ―― Cloudscapes 与 JDBC 交互的脚本工具和 SQL 命令行接口。
o        cslook ―― 查看和转储数据库中对象的数据定义语言(DDL)的 Cloudscapes 工具。
•        csnet.jar ―― Cloudscape Network 服务器。
•        db2jcc.jar 和 db2jcc_license_c.jar ―― Cloudscape Network Server 客户通信 jar 文件。
一般用法/基本特性
问:模式和数据库有何不同?
答: Cloudscape 数据库由一组模式构成,每个模式都有自己的表集,所有模式都用相同的数据词典(SYS 模式中的系统表)定义。 在磁盘上,数据库由一些数据文件(放在 seg0 目录中)和一些事务日志文件(放在 log 目录中)组成。事务不可能跨数据库,但是可以跨越同一个数据库中的不同模式。关于用单个 Cloudscape 引擎连接多个数据库的更多信息,请参考"在 Cloudscape 系统中,应用程序如何连接到多个数据库?"。
Cloudscape 实现了这些模式,以便在单个 DB 中提供多个名称空间。在将相关的表组成一个逻辑单位时,会用到模式。模式没有相关的单独的磁盘文件。同一数据库中的所有模式都使用相同的数据词典和事务日志。您可以在单个 SQL 语句中引用多个模式,这些模式都在同一个连接中执行(不需要打开)的。同一数据库中模式间的 SQL 操作是事务性的。
问:在 Cloudscape 系统中,应用程序如何连接到多个数据库?
答: 可以在单个应用程序中打开多个连接,并且每个连接都针对不同的数据库。但是就通过 SQL 跨数据库操作而言,各个实例/连接并不知道其他连接的存在。两个数据库/连接之间的任何操作,都必须在应用程序级上完成(不能在单个 SQL 语句中),然后显示结果或者将结果写入适当的位置。
比方说,您可以把数据库 A 中的表 ONE 读入一个数组,然后把数据库 B 中的表 TWO 读入另一个数组。循环遍历数组中的数据记录并根据需要修改,然后把数据写回原来的数据库和表中。相反,如果要在同一数据库的不同模式下创建表 ONE 和表 TWO,那么允许您在单个事务中使用 SQL 语句完成这项操作。
性能
问: 如何调整 Cloudscape、提高缓存命中率和减少 I/O 次数?
答: 通过增加 Cloudscape 可用数据缓存的大小,可以改善处理大量数据的系统的性能,减少 I/O 次数。通过设置 pageCache 容纳尽可能多的数据(直到整个数据库),同时避免 OutOfMemory 异常(OOM),可以实现改变缓冲区大小来提高性能的目标。通过 seg0 目录中数据文件的总体大小,可以粗略估计数据库中的数据量(结果偏大)。因为这些文件中存在自由空间,文件大小之和总是超出数据库中所有记录的总和。计算数据文件大小之前压缩数据库,可以减少这种方法的估计偏差。将 pageCache 设得比这个值还大是没有意义的,通常较小的缓存能够提供很好的性能。
优化缓存大小需要反复试验,以保证增加后的缓存既提高了性能,又不会超出 JVM 可用的内存(最大堆)。如果 Cloudscape pageCache 太大,有可能导致 JVM 崩溃。为了避免 OutOfMemory 异常(OOM),需要考虑下面这些因素:
•        机器上的物理内存,JVM 必须装载到物理内存中。
•        允许的 JVM 最大堆(-Xmx)。
•        Cloudscape pageCache 的大小(pageCache * pageSize 的平均值)。
关于调整这些值的更多信息,请参考本文 故障检修 中 "运行 Cloudscape 时如何避免 OutOfMemory 异常"一问。
故障检修
问:运行 Cloudscape 时如何避免 OutOfMemory 异常?
答: 下面几节提供了 Cloudscape 内存应用的背景知识,并介绍了调整 Cloudscape 和 JVM 占用的内存大小,避免 OutOfMemory 异常的一种方法。
与 Cloudscape 内存使用有关的因素
如果不满意 Cloudscape 的性能,或者遇到了 OutOfMemory 异常(OOM),您要做的第一件事就是调整 Cloudscape pageCache。 可以安全分配给 pageCache 的内存受到多种因素的影响:物理内存、 pageSize 的平均大小和 JVM 的最大 Heap 大小(maxHeap)是最主要的因素。基本的方法是按照 JVM 最大 Heap 大小的一定比例,计算分配给 pageCache 的页数。
JVM 最大 Heap 大小
JVM 最大 Heap 大小(maxHeap)是用 Java 参数"-Xmx#m"设置的,其中 # 是分配给堆的最大 Mb 数(如 java -Xmx128m 即分配 128 Mb 的 maxHeap)。一定要保证规定的 JVM 最大堆长度小于机器的物理内存。
JVM MaxHeap 和 Cloudscape PageCache 的联系
使用 Cloudscape 4.0 和 Java 1.4.0 进行内部测试表明,将 heapSize 和 Cloudscape pageCache 的比例设置为 20:1 是安全的。这个比例足以支持活动非常频繁的应用程序,很多应用程序采用较小的比例也能工作得很好。每秒钟内处理的事务量更大的应用程序,即使采用更大的 JVM maxHeap 和 Cloudscape pageCache 比例,也可能会出现 OutOfMemory 异常。如果遇到 OOM,我们建议您进行重负荷测试来确定最佳的系统比例。首先将 JVM 和 pageCache 的比例设为 20:1,然后长期进行重负荷测试,以检查内存使用的稳定性。如果没有出现 OOM,则采用较小的比例继续测试,直到获得可以接受的吞吐量或者应用程序遇到 OutOfMemory 异常。轻型的应用程序甚至能在 2.5:1 的比例下运行。 Cloudscape 5.1 版采用 16:1 的默认比例(pageCache [= 4 MB cache] 和 64K maxHeap),多数应用程序都能在这个比例下很好地工作。最佳比例是能够提供足够的性能而又不会出现 OOM 的比例。
PageCache:计算
Cloudscape pageCache 是由数据库使用的平均 pagesize 决定的,可以通过属性 cloudscape.storage.pageCacheSize 对其进行设置。 pageCache 规定了 Cloudscape 页面缓冲区能够保存的最大页面数。估计 pageCache 所用内存需要用 pageCache 乘上数据库中的平均页面大小(关于页面大小的更多信息,请参考关于 cloudscape.storage.pageSize 属性的文档)。 如果数据库中所有表都使用默认的 4K 页面大小,计算起来非常简单: (pgSz = 4k) x (pageCache 设置)。
JVM Heap 和 PageCache 的比例:计算
对于运行在 1.4 版和更低版本 JVM 上的 Cloudscape 4.0, 默认的 heap:pageCache 比例是(如果没有设置 maxHeap 和 pageCache) 400:1(64M / (40*4K)/1000)。在 5.0 版中,pageCache 的默认大小从 40 增加到了 1000,相应的比例变成了 16:1 (64M / ( (1000*4)/1000 ) )。对于非常活跃的应用程序,这个比例可能太小,因此使用 5.0 版的默认比例可能造成 OOM。
问:如何设置 Cloudscape 开发环境?
答: 按照下述说明设置开发测试环境中的 Cloudscape 属性,能够避免自动删除 Cloudscape 日志并记录下所有的错误和警告。使用这些设置时,Cloudscape 不再是零管理系统,因此需要注意日志文件的大小。一定不要在零管理非常重要的产品环境中使用这些属性。
设置这些属性最简单的办法是创建一个文件,将其命名为 cloudscape.properties,放在 Cloudscape system.home 目录中(通常和包含 Cloudscape 日志文件的目录相同)。也可以在 Java 命令行中使用 -D 参数指定每一个属性。重新启动 Cloudscape 之后,修改的属性才能生效。下面是用于开发测试环境的属性文件,其中带有注释:
#                Top of Sample  File
# This is a sample Cloudscape properties file provided to show
#      setting properties which are useful for development and troubleshooting
#
#  -- Append to the log file rather than overwriting it
#   - manually remove the cloudscape.log when it becomes large
cloudscape.infolog.append=true
#
#  -- Log all errors/messages of any severity (will list deadlocks)
cloudscape.stream.error.logSeverityLevel=0
#
#  --  Log all lock timeouts with additional trace information
cloudscape.locks.monitor=true
#
# - List transaction information on victim and survivor transactions
#     for both lockTimeouts and Deadlocks
cloudscape.locks.deadlockTrace=true
#                End of Sample File
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在 J2EE 服务器环境中使用 Derby
了解 Java 类路径
配置标准的J2EE开发环境
Windows2000下安装J2EE和部署J2EE应用程序
j2ee的13种核心技术
Cloudscape 与 Ajax 示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服