一、Cloudscape數據庫
Cloudscape數據庫是J2EE自帶的RDBMS數據庫管理系統。它提供了所有大型數據庫管理系統的大部分功能,為J2EE的初學(xué)者提供了較好的數據環(huán)境。
Cloudscape™ 是一種占用內存少、多用戶(hù)、標準驅動(dòng)的關(guān)系數據庫系統,它完全用 Java™ 編寫(xiě),適合嵌入到 Java 應用程序和服務(wù)器中。Cloudscape 可以在任何功能完備的 JVM 上運行,因此同一個(gè) Cloudscape 應用程序不必修改就能在多種硬件平臺上運行。
Cloudscape 支持 SQL-92E (entry) 標準和 SQL-99 的一部分,是基于 Java 和 SQL 的關(guān)系數據庫管理系統(ORDBMS),Cloudscape 使用的 API 是 JDBC。 它無(wú)需進(jìn)行管理(零管理),而且無(wú)需在應用程序之外安裝和管理數據庫。“安裝后就忘掉”,這是成功的可嵌入式組件的重要設計目標。 Cloudscape 是作為 Java 類(lèi)庫實(shí)現的關(guān)系數據庫管理引擎。應用程序可以通過(guò) JDBC API 訪(fǎng)問(wèn) Cloudscape 引擎管理的數據。
簡(jiǎn)單說(shuō),Cloudscape 是一個(gè) Java 類(lèi)庫,可以很容易地將它嵌入到任何 Java 應用程序或服務(wù)器架構中,同時(shí)還不會(huì )損害該應用程序的 Java 特性。當需要擴充數據庫時(shí),Cloudscape 支持復雜 SQL 事務(wù)和 JDBC,該特性允許它將應用程序遷移到其他 SQL 數據庫,例如 IBM DB2® Universal Database™(UDB)。
可以從許多技術(shù)方面來(lái)區分 Cloudscape 和其他數據庫系統:
Cloudscape 易于管理。當嵌入到客戶(hù)機應用程序中時(shí),Cloudscape 系統不需要任何管理干預。
Cloudscape 是可嵌入的。應用程序可以將數據庫管理系統(Database Management System,DBMS)引擎嵌入應用程序進(jìn)程中,從而無(wú)需管理單獨的數據庫進(jìn)程或服務(wù)。
通過(guò)網(wǎng)絡(luò )服務(wù)器(Network Server)架構或您選擇的服務(wù)器架構,可以將Cloudscape 作為單獨的進(jìn)程來(lái)運行。
Cloudscape 是一個(gè)純 Java 的類(lèi)庫:對于 Java 開(kāi)發(fā)人員,這點(diǎn)十分重要,因為他們正試圖維護 Java 技術(shù)的優(yōu)點(diǎn),例如平臺無(wú)關(guān)性、易于配置以及易于安裝。
Cloudscape 不需要專(zhuān)有的 Java 虛擬機(Java Virtual Machine,JVM)。因為完全是用 Java 語(yǔ)言編寫(xiě)的,所以它適應所有合格的 JVM。
Cloudscape DBMS 引擎是輕量級的。類(lèi)文件大小大約是 2MB,并且只使用了 4MB 的 Java 堆。
Cloudscape 支持使用 Java 編寫(xiě)存儲過(guò)程和函數,這些存儲過(guò)程和函數可以在應用程序的任何層上運行。Cloudscape 沒(méi)有專(zhuān)用的存儲過(guò)程語(yǔ)言,它使用 JDBC。
Cloudscape 與其他的關(guān)系數據庫系統類(lèi)似。它實(shí)現了 SQL92E 語(yǔ)言標準和 JDBC API 標準。Cloudscape 也有事務(wù)(提交和回滾),能夠通過(guò)事務(wù)隔離支持多個(gè)連接,并提供了崩潰恢復。與其他數據庫一樣,它允許多個(gè)線(xiàn)程共享同一連接,而且,隨著(zhù)對 Java 技術(shù)進(jìn)行擴展,Cloudscape 也實(shí)現了許多 SQL99 特性。
這種技術(shù)功能的獨特組合允許應用程序開(kāi)發(fā)人員構建數據驅動(dòng)的應用程序,這些應用程序是普遍的(到處運行)、可部署的(可下載的)、可管理的、可擴展的和可連接的。
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™(一種純關(guān)系 Java™ 數據庫)作為開(kāi)放源代碼發(fā)布給 Apache Software Foundation (ASF),后者已為其建立了一個(gè)名為“Derby”的孵化器項目。這是繼 IBM 向開(kāi)放源代碼社區作出一系列承諾以來(lái)的最新承諾。
據悉,IBM為ASF提供的“Derby”軟件是IBM公司前Cloudscape關(guān)系數據庫產(chǎn)品的一部分,此舉旨在激發(fā)負責Java應用開(kāi)發(fā)的社團的創(chuàng )新。
IBM希望借助這次捐助活動(dòng)提高使用Derby軟件進(jìn)行Java開(kāi)發(fā)的速度,為開(kāi)發(fā)商和客戶(hù)開(kāi)發(fā)基于Java的嵌入式數據庫功能提供新的選擇。到目前為止,IBM已經(jīng)雇傭了將近4000名Java專(zhuān)業(yè)人員,并提供100多種Java驅動(dòng)的產(chǎn)品和解決方案。
Derby是一套基于Java的關(guān)系數據庫,可完全嵌入而無(wú)需管理支持的2MB容量。同時(shí),它還是開(kāi)發(fā)商的理想軟件,在無(wú)需企業(yè)級數據庫系統的情況下,開(kāi)發(fā)人員使用該軟件能夠方便地構建和部署應用和工作負載。
為了弄清楚更多關(guān)于這種數據庫的問(wèn)題,以及這種數據庫如何融入到 IBM 的戰略和 Java 應用程序架構中去,Jon Prial -IBM 副總裁接受了有關(guān)方面的專(zhuān)門(mén)采訪(fǎng),以下為訪(fǎng)談的部分內容。
問(wèn): 在 LinuxWorld 上,IBM 宣布將 Cloudscape 貢獻給 Apache Software Foundation。那么,什么是 Cloudscape?
答:Cloudscape 是一種基于 Java 的、具有全面事務(wù)支持能力的關(guān)系數據庫技術(shù)。它是一種純嵌入式數據庫,可以用在應用程序中,也可以作為更傳統的客戶(hù)機-服務(wù)器應用程序的數據庫。它體積小,而且不需要數據庫管理員;您只需編寫(xiě)應用程序。在需要時(shí)直接調用數據庫,Cloudscape 就可以為您服務(wù)。
問(wèn): 開(kāi)放源代碼版本與 IBM 的商業(yè)版本之間有什么不同?
答:我們已經(jīng)把 Cloudscape 的代碼獻給了 Apache Software Foundation [ASF]。在 Apache 中這個(gè)項目叫做“Derby”,IBM Cloudscape 的未來(lái)商業(yè)版本都將以 Derby 代碼為基礎。
Derby 是一個(gè)孵化器(incubator)項目,這也是外部項目成為 ASF 一部分的一種常見(jiàn)的方式。但是開(kāi)發(fā)人員如今可以在 Apache 的許可下為 Derby 代碼作出貢獻,或者下載 Derby 代碼,我們正在積極地與我們的合作伙伴以及 Apache 合作,以發(fā)展和形成致力于 Derby 項目的社區。
對于我們的 Cloudscape 項目,IBM 搬用 Derby 代碼,并作為 IBM Cloudscape offering 提供完全支持。您也可以免費下載 IBM Cloudscape 代碼,并且可以從 IBM 那里購買(mǎi)對它的支持,但我們并不打算收取 Cloudscape 的許可費。
問(wèn): 為什么 IBM 決定公開(kāi) Cloudscape 源代碼?
答:通過(guò)將 Cloudcape 開(kāi)放源代碼,IBM 希望加快基于 Java 的應用程序的開(kāi)發(fā),并帶動(dòng) Linux 和 Java 方面的更多革新。所以,擴大這方面的市場(chǎng)就等于擴大高價(jià)值的 IBM 中間件、硬件和服務(wù)方面的市場(chǎng)。我們認為這樣做尤其可以在嵌入式數據庫應用程序、小型企業(yè)解決方案以及基于 Java 和基于 Web 的應用程序等領(lǐng)域開(kāi)辟新的商機。
開(kāi)發(fā)人員能識別好的代碼。當我們從 Informix® 取得 Cloudscape 代碼時(shí),我們內部的開(kāi)發(fā)社區便開(kāi)始談?wù)撍?,并做一些工作。?shí)際上,至今在 IBM 中已有 70 個(gè)項目在他們的 offering 中使用 Cloudscape -- 其中有很多項目已發(fā)布到市場(chǎng),例如 WebSphere® Application Server、WebSphere Portal 和 IBM Workplace。所以,我們知道我們有一項有趣的技術(shù),而這項技術(shù)可以成為 Java 架構的一部分。我們看到 Java 數據庫和 Apache 正在做的 Java 工作之間有關(guān)聯(lián),并且認識到這是一個(gè)巨大的項目,適合開(kāi)放源代碼來(lái)做。
現在,IBM 對開(kāi)放源代碼社區有一個(gè)長(cháng)期的承諾。我們之所以有能力建立那樣的關(guān)系,部分原因就在于我們知道不是為了開(kāi)放源代碼而開(kāi)放源代碼,而是開(kāi)放源代碼可以使事情變得更容易。
IBM 知道必須找到正確的方式來(lái)建立社區和鼓勵革新,而我們也用了很多不同的方法,例如支持 Eclipse.org 的創(chuàng )建。通過(guò)與 Apache 合作,我們可以為使用 Derby 并幫助使其變得更好的開(kāi)發(fā)人員們建立一個(gè)社區。實(shí)際上,我們希望看到 Derby 數據庫變得和 Apache HTTP 服務(wù)器一樣無(wú)所不在。
問(wèn): 使用 Cloudscape 可以做哪些事情呢?
答:Cloudscape 最有趣的一個(gè)用法就是作為一個(gè) Java 數據存儲,直接將數據庫輸入到 Java 應用程序中。我曾提到過(guò),Cloudscape 數據庫非常小。它只是一個(gè) 2MB 的 .jar 文件。有了這樣一個(gè) Java 數據庫,當一個(gè) Java 應用程序想要使用它時(shí),根本不需要做任何工作,不需要進(jìn)行任何管理。Java 應用程序只需發(fā)出 JDBC 調用,然后訪(fǎng)問(wèn)數據,之所以可以這樣做,是因為數據庫自始至終都是以一個(gè) .jar 文件的形式存在。
Cloudscape 技術(shù)實(shí)際上非常通用 ― 我認為,認識到其他類(lèi)型的應用程序在這里也可以使用是很重要的。我曾提到過(guò),IBM Workplace 在客戶(hù)端使用 Cloudscape,以便將數據自動(dòng)復制回服務(wù)器。我們在 LinuxWorld 提供了 "IBM Workplace Data Access" 可編寫(xiě)腳本桌面數據庫的技術(shù)預覽 ― 這是一種用于創(chuàng )建客戶(hù)端數據庫、查詢(xún)和報表的商業(yè)用戶(hù)工具。
人們可以使用 Cloudscape 網(wǎng)絡(luò )服務(wù)器特性,將其當作基于服務(wù)器的數據存儲來(lái)訪(fǎng)問(wèn)。因此,雖然我們原本期望看到圍繞 Java 應用程序的大多數初始用法,但實(shí)際上 Cloudscape 還可以用作客戶(hù)機-服務(wù)器數據庫。
問(wèn): IBM 將提供哪些類(lèi)型的 Eclipse 工具?
答:我們擁有一些用于 Eclipse 的插件,通過(guò)這些插件可以訪(fǎng)問(wèn)數據庫。此外,我們還為那些使用 Cloudscape 并希望遷移到企業(yè)級的數據庫的人們提供了工具。例如,他們可以從 Cloudscape 移植到 DB2®。
問(wèn): 您提到了 "IBM Workplace Data Access"??梢哉劦酶敿氁稽c(diǎn)嗎?
答:IBM Workplace Data Access 是商業(yè)用戶(hù)用于創(chuàng )建和查詢(xún)運行在不同桌面環(huán)境(包括 Windows® 和 Linux)上的數據庫應用程序的一種工具。我們使用 Eclipse 框架開(kāi)發(fā) GUI,用 Cloudscape 作為底層數據庫。
我們認為 IBM Workplace Data Access 將可以獨自開(kāi)辟新的機遇。但它也是將輕量級、跨平臺的數據庫(例如 Cloudscape 或 Derby)與用于應用程序開(kāi)發(fā)的跨平臺客戶(hù)端框架(例如 Eclipse)相結合的一個(gè)偉大的典范。
問(wèn): Cloudscape 在 DB2 數據庫系列中處于什么樣的地位?
答:Cloudscape 能滿(mǎn)足新的和正在增長(cháng)的市場(chǎng)的需求。作為面向 Java 的數據庫,Cloudscape 的定位非常恰當,它很好地彌補了我們的其他數據庫:DB2 Universal Database™、Informix Dynamic Server、DB2 Express 等等。又因為它是建立在開(kāi)放標準基礎上的,任何針對 Cloudscape 編寫(xiě)的應用程序都可以很容易地遷移到 DB2 UDB 和其他數據庫上運行,這正是企業(yè)級的解決方案所需要的。
問(wèn): Derby 與其他開(kāi)放源代碼數據庫有什么不同?
答:沒(méi)有哪種開(kāi)放源代碼數據庫像 Derby 這樣適合擴展 Java 架構,并帶動(dòng)整個(gè)社區的革新。IBM 非常注重滿(mǎn)足這一需求。我們曾看到其他公司僅僅做到數據庫源代碼開(kāi)放,根本沒(méi)有提供可行的計劃來(lái)建立社區。很多開(kāi)放源代碼數據庫都有許可限制,有時(shí)候 ISV 實(shí)際上不得不為取得重新發(fā)布開(kāi)放源代碼數據庫的權利而付出代價(jià)。而且有時(shí)候這些數據庫并不完全是關(guān)系型數據庫或事務(wù)處理數據庫。
所以,與其他開(kāi)放源代碼數據庫相比,Derby 是獨一無(wú)二的。它的確是功能豐富的關(guān)系型數據庫。而且,它完全是免費提供的,沒(méi)有商業(yè)許可限制。
問(wèn): 您還有什么要補充嗎?
答:Cloudscape 技術(shù)是 IBM 更大型數據產(chǎn)品戰略的一個(gè)擴展。我們的想法是集成各種不同的數據存儲 ― 從 zSeries® 到普適(pervasive)設備 ― 以支持來(lái)自 IBM 和非 IBM 數據源的結構化的和非結構化的數據。我們認為信息集成是將這些維系在一起的關(guān)鍵,而我們的 DB2 產(chǎn)品為客戶(hù)提供了實(shí)現這一點(diǎn)的框架。
公共的、一致的用于訪(fǎng)問(wèn)信息的框架使人們可以做更多的事情 ― 利用數據,收集更多洞察力,以及成為更能隨需應變的企業(yè)。我們看到 Cloudscape 正是其中的關(guān)鍵部分。
cloudscape 使用入門(mén)
一、配置Cloudscape數據庫{未驗證}
1. 安裝j2eesdk1.3.1或者j2ee的更高版本。軟件可以到sun的網(wǎng)站上去找http://java.sun.com/j2ee。注意:若j2ee安裝后目錄下并沒(méi)有cloudscape子目錄,則參見(jiàn)下文的- derby數據庫安裝
2. 在環(huán)境變量里配置J2EE_HOME。J2EE_HOME=j2ee的安裝目錄,例如c:\j2sdkee1.3.1。
3. 在環(huán)境變量里的path里加入%J2EE_HOME%\bin
二、啟動(dòng)Cloudscape
在J2EE的安裝目錄下,有cloudscape子目錄,這就是Cloudscape數據庫的主目錄。在這個(gè)目錄下面的CloudscapeDB目錄是存儲數據的目錄。
1. 啟動(dòng)Cloudscape
在DOS窗口中輸入"cloudscape -start",可以啟動(dòng)Cloudscape。說(shuō)明:DOS窗口目錄需為j2ee的bin目錄下。
C:\>cloudscape ?Cstart
啟動(dòng)cloudscape數據庫,成功啟動(dòng)后出現如下信息:
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. 進(jìn)入Cloudscape數據編輯器
在DOS窗口中輸入"cloudscape -isql",可以進(jìn)入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語(yǔ)句創(chuàng )建、刪除、修改數據表和數據表中的記錄。
創(chuàng )建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‘;
可以通過(guò)"help;"命令,獲取所有Cloudscape數據編輯器命令的信息。
5. 如何調出cloudscape數據庫的圖形管理界面及相關(guān)問(wèn)題
在命令行方式下敲入java COM.cloudscape.tools.cview很可能會(huì )出現錯誤。
什么原因呢?第一、你要看看你的jdk版本對不對,是不是1.3.1_02以上或者1.4的。第二、關(guān)鍵中的關(guān)鍵,原來(lái)sun的j2ee里的cloudview是不能在他附帶的cloudscape4.0.6下工作的。
這里是在ibm網(wǎng)站上的一句原話(huà):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。所以同志門(mén)就自己去下一個(gè)吧!
常見(jiàn)錯誤:java.lang.ClassNotFoundException: COM.cloudscape.core.JDBCDriver
英文解釋?zhuān)?br>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)
中文解釋?zhuān)?br>重點(diǎn)是設置對RmiJdbc.jar , cloudclient.jar and system/cloudscape.jar
幾點(diǎn)注意的地方:
1. 修改完resource.properties,需要重起j2ee server
2. 使用cloudview時(shí),cloudscape數據庫必須關(guān)閉,設置完以后再重起數據庫
3. deploy修改默認SQL的時(shí)候,點(diǎn)畫(huà)面左邊的SQL名稱(chēng),右邊出現SQL文,修改完畢之后必須再點(diǎn)一下左邊的這個(gè)SQL名稱(chēng),這樣表示更新了,如果直接去點(diǎn)別的SQL名稱(chēng),就會(huì )亂掉??吹角懊嬗械母鐐儍赫f(shuō)改一下就按一下OK,否則會(huì )亂,其實(shí)不必。
4. 不知道cloudscape數據庫怎么樣,反正Oracle中在SQL中不加""就會(huì )忽略大小寫(xiě)。比如:select * from employee where employeeID=‘123‘和select * from EMPLOYEE where EMPLOYEEID=‘123‘是一樣的,但是deploy時(shí)默認的SQL中是有""的,這樣select * from "employee" where "employeeID"=‘123‘就和select * from "EMPLOYEE" where "EMPLOYEEID"=‘123‘不一樣了。前面有的朋友說(shuō)字段大小寫(xiě)的問(wèn)題估計就在此。
5. deploy結束之后需要save,否則jsp中輸入ID,點(diǎn)submit就會(huì )是白板一塊。
三、開(kāi)發(fā)第一個(gè)J2EE、配置J2EE環(huán)境及Cloudscape數據庫
本部分將一步步教j2ee入門(mén)者配置出一個(gè)標準的j2ee環(huán)境,本人一步步自己摸索配置了j2ee的開(kāi)發(fā)環(huán)境,到最后啟動(dòng)了cloudscape數據庫的cloudview可謂很費周折,主要原因是沒(méi)有仔細看說(shuō)明。
首先,確認你下載了j2se1.3.1_02以上的jdk版本和j2sdkee.1.3.1。這些軟件可以到sun的網(wǎng)站上去找http://java.sun.com/j2ee。 目前j2se的最高版本是j2se1.4。然后安裝上述軟件。我的安裝目錄是在H:盤(pán)。在安裝之前如果你以前裝有不同版本的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;
注意:上面是我的機器上的目錄,如果你安裝在不同的目錄上的話(huà),請自行改變。
啟動(dòng)j2ee服務(wù)
安裝、設置后,就可以順利的啟動(dòng)j2ee,到h:\j2sdkee1.3.1\bin目錄下執行j2ee.bat文件。打開(kāi)瀏覽器敲入地址http://localhost:8000/index.html可以看到首頁(yè)就說(shuō)明對了。
啟動(dòng)j2ee自帶的cloudscape數據庫
這個(gè)也簡(jiǎn)單,把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可以啟動(dòng)cloudscape數據庫
關(guān)鍵的問(wèn)題出在如何調出cloudscape數據庫的圖形管理界面!
你在命令行方式下敲入java COM.cloudscape.tools.cview一般都會(huì )出現錯誤。什么原因呢?第一、你要看看你的jdk版本對不對,是不是1.3.1_02以上或者1.4的。
第二、關(guān)鍵中的關(guān)鍵,原來(lái)sun的j2ee里的cloudview是不能在他附帶的cloudscape4.0.6下工作的(真不知道sun在搞什么東東 :))
這里是在ibm網(wǎng)站上的一句原話(huà):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。所以同志門(mén)就自己去下一個(gè)吧!這里還需要兩個(gè)jar文件。下載cloudview.jar和jd.jar把這兩個(gè)文件放在j2sdkee1.3.1下的cloudscape目錄下,我這里還需要加兩個(gè)classpaht路徑
h:\j2sdkee1.3.1\cloudscape\cloudview406.jar;
h:\j2sdkee1.3.1\cloudscape\jh.jar
OK!一起大功告成!現在看看怎么啟動(dòng)cloudview,在命令行下鍵入
java -Dcloudscape.system.home=%j2ee_home%\cloudscape COM.cloudscape.tools.cview
這里-Dcloudscape.system.home是設置數據庫存放的路徑,這個(gè)路徑可以在建立數據庫的時(shí)候改變
%j2ee_home%\cloudscape是cloudscape的默認工作目錄
也可以將-Dcloudscape.system.home后的路徑去掉,不過(guò)要記住,要將數據庫建在改路徑下,否則j2ee server找不到它!
好了,接下來(lái)你會(huì )發(fā)現一個(gè)圖形界面起來(lái)了。
四、derby數據庫安裝{驗證}
1. 該數據庫可在IBM和Apache兩處下載,cloudscape是derby數據庫的商業(yè)版本,由IBM贈送與Apache后的稱(chēng)呼。
Apache一方目前版本是Derby 10.1.0.0 alpha (Apr 28, 2005 / SVN 165185)。由于alpha版,而且Derby 10.0.2.2 (Apr 28, 2005 / SVN 165169)版本的數據庫提供的附加工具及少,所以我是去IBM網(wǎng)站下載的數據庫。
IBM網(wǎng)站目前版本是V10.0.2.0 Build: 30301,提供3種類(lèi)型的下載,有installer的linux,win32和沒(méi)有installer一個(gè)單一的zip包文件。win32中包括jdk1.4,考慮到我的機器已經(jīng)被迫安裝了n個(gè)jdk,故此我下載了單一zip包的cloudscape。
IBM下載地址為:
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0408cline/index.html,需要以自己的mail作為id注冊一個(gè)用戶(hù)才能下載。
2. 下載后運行java ?Cjar 10.0-IBM-Cloudscape.jar,出現安裝界面,在這里需要指定安裝目錄,需要注意的是安裝目錄盡量不要帶有空格。
3. 安裝完后需要進(jìn)行一些環(huán)境變量的設置,請根據自己的實(shí)際情況增加以下環(huán)境變量:
數據庫安裝目錄環(huán)境變量:
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. 現在就可以對數據庫進(jìn)行操作。該數據庫提供兩種模式的數據庫引擎:
(1. 服務(wù)器架構中充當客戶(hù)機/服務(wù)器的引擎。
(2. 作為可嵌入類(lèi)庫的數據庫引擎。在c/s引擎應該比較了解??汕度腩?lèi)庫的數據庫引擎就是和java程序運行在同一JVM中,不需要啟動(dòng)數據庫,不需要對數據庫進(jìn)行管理(對這個(gè)我也知道個(gè)大概,呵呵)。
1.C/S模式下的數據庫訪(fǎng)問(wèn):
打開(kāi)dos界面,敲入startNetworkServer啟動(dòng)數據庫,再打開(kāi)一個(gè)dos界面敲ij以進(jìn)行數據庫管理。
在D:\IBM\Cloudscape_10.0\demo\databases下有一toursDB的demo數據庫,我們要連至該數據庫我們可以在ij下敲入:
connect ‘jdbc:derby:net://localhost:1527/"D:\IBM\Cloudscape_10.0\demo\databases\toursDB"‘
例如以下我是對數據庫的一些簡(jiǎn)單操作:
--連接數據庫:(;不可少)
ij> connect ‘jdbc:derby:net://localhost:1527/"D:\IBM\Cloudscape_10.0\demo\databases\toursDB"‘;
--創(chuàng )建一個(gè)名為abc的表:
ij> create table abc (a int, b int);
0 rows inserted/updated/deleted
--往abc表中插入數據,沒(méi)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(?代表一個(gè)怪字符,spaces上發(fā)布的時(shí)候提示“此空間暫時(shí)不可用”,沒(méi)辦法只好用?代替啦,發(fā)現問(wèn)題浪費了我十幾分鐘時(shí)間,TNND)
--這次數據進(jìn)去了
ij> insert into abc values(1,2);
1 row inserted/updated/deleted
--察看剛才插入的數據
ij> select * from abc;
A |B
-----------------------
1 |2
1 row selected
--斷開(kāi)數據庫連接,沒(méi)有任何信息輸出
ij> disconnect;
--退出ij
ij> exit;
注意命令結束符是分號“;”
如果要停止數據庫在dos中敲入stopnetworkserver即可。
2.可嵌入類(lèi)庫模式下對DB的訪(fǎng)問(wèn)(該模式下不需要啟動(dòng)數據庫,且ij中只能有一個(gè)連接操作數據庫)
我的toursDB數據庫目錄為C:\IBM\Cloudscape_10.0\demo\databases下,如果我們DOS界面所在的目錄已經(jīng)在在該目錄,則進(jìn)入ij后直接敲入“connect ‘jdbc:derby:toursDB‘;”就可以連接至數據庫,否則得指定數據庫所在路徑“connect ‘jdbc:derby:C:\IBM\Cloudscape_10.0\demo\databases\toursDB‘;”。下面是我對數據庫的一些訪(fǎng)問(wèn):
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數據庫自帶的一個(gè)表,其它的表還有airlines, countries,flightavailability,flights,flights_history,maps。
關(guān)于數據庫的一些操作命令可在ij下敲入help;進(jìn)行察看,詳細的幫助信息在D:\IBM\Cloudscape_10.0\doc\pdf中,IBM的developerWorks下的DB2有很多介紹cloudscape相關(guān)技術(shù)的文章,網(wǎng)址:http://www-128.ibm.com/developerworks/cn/index.html。 還有IBM的在線(xiàn)幫助手冊有3本是中文的,網(wǎng)址:
http://www.elink.ibmlink.ibm.com/public/applications/publications/cgibin/pbi.cgi?CTY=US&FNC=ICL,進(jìn)去后選擇cloudscape。
Cloudscape 常見(jiàn)問(wèn)題
一般問(wèn)題
問(wèn): 什么是 Cloudscape Version 10.0?
答: Cloudscape 是一種占用內存少、多用戶(hù)、標準驅動(dòng)的關(guān)系數據庫系統,它完全用 Java 編寫(xiě),適合嵌入到 Java 應用程序和服務(wù)器中。 Cloudscape 可以在任何功能完備的 JVM 上運行,因此同一個(gè) Cloudscape 應用程序不必修改就能在多種硬件平臺上運行。
Cloudscape 支持 SQL-92E (entry) 標準和 SQL-99 的一部分。 Cloudscape 使用的 API 是 JDBC。 它無(wú)需進(jìn)行管理(零管理),而且無(wú)需在應用程序之外安裝和管理數據庫。"安裝后就忘掉",這是成功的可嵌入式組件的重要設計目標。
問(wèn): 何為"嵌入(embedded)"?
答:按照 Merriam Webster OnLine Dictionary(http://m-w.com/)的定義:
em•bed•ded; em•bed•ding 及物動(dòng)詞
1 a : 緊緊地包圍或者像在母體中那樣 b : 使......成為整體的一部分 c : 通過(guò)滲透和固定在載玻片上準備(顯微鏡用樣品)切片。
2 : 緊緊圍住 不及物動(dòng)詞:被嵌入。
"嵌入式 Cloudscape"意味著(zhù)沒(méi)有單獨的數據庫服務(wù)器; Cloudscape 和 Java 應用程序是一起安裝(jar 文件和數據庫文件)的。它和應用程序在同一個(gè) JVM 上運行,啟動(dòng)和關(guān)閉都由應用程序控制。終端用戶(hù)無(wú)需關(guān)心應用程序中的數據庫系統。其結果就是應用程序很容易部署,并且具有關(guān)系數據庫系統的所有特性。
問(wèn):嵌入式 Cloudscape 是一種多用戶(hù)數據庫嗎?
答: 是的,無(wú)論選擇了什么樣的部署選項,Cloudscape 都支持多用戶(hù)訪(fǎng)問(wèn)。 Cloudscape 手冊說(shuō)明了如何在單用戶(hù)應用程序中使用 CLoudscape。 Cloudscape 非常適合在這種結構中運行,但它本身并不是單用戶(hù)的。多用戶(hù)意味著(zhù)在需要時(shí),引擎可以管理多個(gè)獨立的事務(wù)。 即使是在嵌入式部署環(huán)境中,Cloudscape 也支持多連接。每個(gè)連接代表一個(gè)單獨的事務(wù)。這樣就允許單個(gè)應用程序建立多個(gè)連接,從而執行多個(gè)獨立的事務(wù)。每個(gè)連接可以規定 4 種事務(wù)隔離級別,以滿(mǎn)足并發(fā)性的要求。關(guān)于事務(wù)隔離級別、并發(fā)和鎖定類(lèi)型的完整描述,請參閱 Cloudscape Developers Guide。
一定要注意的是,Cloudscape jar 文件中不含網(wǎng)絡(luò )代碼,再次聲明,這并不意味著(zhù) Cloudscape 是單用戶(hù)的,盡管有時(shí)候這樣解釋。在運行 Cloudscape 引擎的 JVM 之外進(jìn)行通信(進(jìn)程間通信)必須使用網(wǎng)絡(luò )消息。兩個(gè)獨立進(jìn)程間的通信稱(chēng)為客戶(hù)機-服務(wù)器。為了滿(mǎn)足客戶(hù)機-服務(wù)器通信方式的需要,Cloudscape 提供了 Network Server 功能(在單獨的 jar 文件中)。 Cloudscape 很容易嵌入 Network Server,以便在需要的時(shí)候提供客戶(hù)機-服務(wù)器連接。 Cloudscape 也很容易嵌入其他很多服務(wù)器程序(如 WebShpere、Apache Tomcat 等),因此選擇權在您手中。
問(wèn):為何 Cloudscape 不在其基本產(chǎn)品中提供 Client/Server 功能?
答: 很多應用程序完全在單個(gè)系統、單個(gè)進(jìn)程中運行,不需要 Client/Server 功能。比如,存儲輸入到 Web 表單中的數據的 servlet,或者在 PC 上運行的地址簿應用程序,都不需要和其他進(jìn)程通信。 Client/Server 代碼只會(huì )增加這些應用程序的內存消耗,而沒(méi)有其他任何用處。對于這類(lèi)應用程序,Cloudscape 提供了關(guān)系數據庫的所有便利,而沒(méi)有增加不必要的網(wǎng)絡(luò )代碼。在需要的時(shí)候,可以通過(guò)運行 Network Server 或者其他服務(wù)器體系結構,隨時(shí)添加 Client/Server 的功能。
安裝
問(wèn):如何安裝 Cloudscape 環(huán)境?
答: 安裝非常簡(jiǎn)單,通過(guò)使用 Java 安裝程序,安裝完全是平臺獨立的(啟動(dòng)安裝過(guò)程和指定文件路徑的命令行語(yǔ)法仍然和平臺有關(guān))。 這里簡(jiǎn)要說(shuō)明了如何使用 Java 安裝程序進(jìn)行安裝,也可能提供用于特定平臺的其他安裝程序類(lèi)型,關(guān)于使用平臺專(zhuān)用安裝程序的信息,請參閱 install.html 文件。
安裝需要啟動(dòng) JVM,而且需要在文件系統有足夠的磁盤(pán)空間 ―― jar 文件需要 4 Mb 的磁盤(pán)空間;帶有 javadoc 和例子的完整 Cloudscape 安裝需要 24 Mb 的磁盤(pán)空間;完全安裝 Cloudscape 和 IBM JRE 需要 64 Mb 的磁盤(pán)空間(僅用于 Windows)。這些數據不包括安裝文件的大小。
在命令行提示符下,切換到包含 Cloudscape 安裝文件的目錄,通過(guò)下面的命令啟動(dòng)安裝程序:
\java -cp. -jar
其中:
• 是 java.exe 文件的完全限定目錄(通常用環(huán)境變量 JAVA_HOME 規定)。
• 是安裝文件。
相應的提示:
• 第 1 屏:檢查安裝的產(chǎn)品是否正確,單擊 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 屏:檢查安裝選項和需要的磁盤(pán)空間。單擊 Next。
• 第 6 屏:?jiǎn)螕?Next,然后單擊 Finish。
配置/設置
問(wèn):Cloudscape 部署的基本組件有哪些?
答: Cloudscape 在應用程序中部署的主要組件包括 1) jar 文件, 2) 數據庫文件和 3) Cloudscape 日志。所有 Cloudscape 部署中都有這些文件,而且,在進(jìn)行任何數據庫級操作或者調試之前,必須安裝好它們。
在討論任何 Cloudscape 部署時(shí), Cloudscape System Home 的概念也很重要。 Cloudscape System Home 是創(chuàng )建所有文件的默認位置,也是存放數據庫和 Cloudscape 日志的默認位置。如果沒(méi)有通過(guò)屬性 cloudscape.system.home 定義這個(gè)位置,那么運行 Cloudscape 引擎的 JVM 的當前工作目錄將被默認為該位置。在產(chǎn)品部署中明確定義并記錄 Cloudscape System Home 是謹慎的做法。在第一次連接到數據庫(或者說(shuō)啟動(dòng) Cloudscape 引擎)之前,需要設置 cloudscape.system.home。
日志文件的默認名稱(chēng)為 cloudscape.log,但該文件名是可以配置的,有時(shí)候應用程序員也可以更改它。在默認情況下,該日志文件被寫(xiě)入 cloudscape.system.home,采用這一默認位置是一種謹慎做法。任何數據庫級的調查/調試活動(dòng)都需要該日志文件。為了進(jìn)行 Cloudscape 部署,該文件的位置和名稱(chēng)必須是已知的。日志文件包含 Cloudscape 引擎啟動(dòng)的所有數據庫列表和出現的錯誤(要記錄其他消息,可以設置 cloudscape.stream.error.logSeverityLevel,請參閱 Cloudscape Tuning Guide"Cloudscape 屬性"一章)。
數據庫文件(如 c2a10.dat)和事務(wù)日志文件(如 log2.dat)位于主數據庫目錄的子目錄下。主目錄和數據庫同名(如 toursDB)。 啟動(dòng)數據庫需要知道數據庫目錄的路徑。主數據庫目錄至少包含兩個(gè)子目錄:
• ‘seg0‘ 包含數據文件。
• ‘log‘ 包含事務(wù)日志文件。
一定不要直接存取這些目錄中的任何文件。
cs.jar 文件包含運行 Cloudscape 引擎的代碼。該文件必須位于類(lèi)路徑中,以便加載 Cloudscape 引擎和啟動(dòng) Cloudscape 數據庫。 Cloudscape 開(kāi)發(fā)環(huán)境包含 Cloudscape 部署包中的其他可選 jar 文件。其中包括:
• cstools.jar ―― 工具 ij 和 cslook。
o ij ―― Cloudscapes 與 JDBC 交互的腳本工具和 SQL 命令行接口。
o cslook ―― 查看和轉儲數據庫中對象的數據定義語(yǔ)言(DDL)的 Cloudscapes 工具。
• csnet.jar ―― Cloudscape Network 服務(wù)器。
• db2jcc.jar 和 db2jcc_license_c.jar ―― Cloudscape Network Server 客戶(hù)通信 jar 文件。
一般用法/基本特性
問(wèn):模式和數據庫有何不同?
答: Cloudscape 數據庫由一組模式構成,每個(gè)模式都有自己的表集,所有模式都用相同的數據詞典(SYS 模式中的系統表)定義。 在磁盤(pán)上,數據庫由一些數據文件(放在 seg0 目錄中)和一些事務(wù)日志文件(放在 log 目錄中)組成。事務(wù)不可能跨數據庫,但是可以跨越同一個(gè)數據庫中的不同模式。關(guān)于用單個(gè) Cloudscape 引擎連接多個(gè)數據庫的更多信息,請參考"在 Cloudscape 系統中,應用程序如何連接到多個(gè)數據庫?"。
Cloudscape 實(shí)現了這些模式,以便在單個(gè) DB 中提供多個(gè)名稱(chēng)空間。在將相關(guān)的表組成一個(gè)邏輯單位時(shí),會(huì )用到模式。模式?jīng)]有相關(guān)的單獨的磁盤(pán)文件。同一數據庫中的所有模式都使用相同的數據詞典和事務(wù)日志。您可以在單個(gè) SQL 語(yǔ)句中引用多個(gè)模式,這些模式都在同一個(gè)連接中執行(不需要打開(kāi))的。同一數據庫中模式間的 SQL 操作是事務(wù)性的。
問(wèn):在 Cloudscape 系統中,應用程序如何連接到多個(gè)數據庫?
答: 可以在單個(gè)應用程序中打開(kāi)多個(gè)連接,并且每個(gè)連接都針對不同的數據庫。但是就通過(guò) SQL 跨數據庫操作而言,各個(gè)實(shí)例/連接并不知道其他連接的存在。兩個(gè)數據庫/連接之間的任何操作,都必須在應用程序級上完成(不能在單個(gè) SQL 語(yǔ)句中),然后顯示結果或者將結果寫(xiě)入適當的位置。
比方說(shuō),您可以把數據庫 A 中的表 ONE 讀入一個(gè)數組,然后把數據庫 B 中的表 TWO 讀入另一個(gè)數組。循環(huán)遍歷數組中的數據記錄并根據需要修改,然后把數據寫(xiě)回原來(lái)的數據庫和表中。相反,如果要在同一數據庫的不同模式下創(chuàng )建表 ONE 和表 TWO,那么允許您在單個(gè)事務(wù)中使用 SQL 語(yǔ)句完成這項操作。
性能
問(wèn): 如何調整 Cloudscape、提高緩存命中率和減少 I/O 次數?
答: 通過(guò)增加 Cloudscape 可用數據緩存的大小,可以改善處理大量數據的系統的性能,減少 I/O 次數。通過(guò)設置 pageCache 容納盡可能多的數據(直到整個(gè)數據庫),同時(shí)避免 OutOfMemory 異常(OOM),可以實(shí)現改變緩沖區大小來(lái)提高性能的目標。通過(guò) seg0 目錄中數據文件的總體大小,可以粗略估計數據庫中的數據量(結果偏大)。因為這些文件中存在自由空間,文件大小之和總是超出數據庫中所有記錄的總和。計算數據文件大小之前壓縮數據庫,可以減少這種方法的估計偏差。將 pageCache 設得比這個(gè)值還大是沒(méi)有意義的,通常較小的緩存能夠提供很好的性能。
優(yōu)化緩存大小需要反復試驗,以保證增加后的緩存既提高了性能,又不會(huì )超出 JVM 可用的內存(最大堆)。如果 Cloudscape pageCache 太大,有可能導致 JVM 崩潰。為了避免 OutOfMemory 異常(OOM),需要考慮下面這些因素:
• 機器上的物理內存,JVM 必須裝載到物理內存中。
• 允許的 JVM 最大堆(-Xmx)。
• Cloudscape pageCache 的大?。╬ageCache * pageSize 的平均值)。
關(guān)于調整這些值的更多信息,請參考本文 故障檢修 中 "運行 Cloudscape 時(shí)如何避免 OutOfMemory 異常"一問(wèn)。
故障檢修
問(wèn):運行 Cloudscape 時(shí)如何避免 OutOfMemory 異常?
答: 下面幾節提供了 Cloudscape 內存應用的背景知識,并介紹了調整 Cloudscape 和 JVM 占用的內存大小,避免 OutOfMemory 異常的一種方法。
與 Cloudscape 內存使用有關(guān)的因素
如果不滿(mǎn)意 Cloudscape 的性能,或者遇到了 OutOfMemory 異常(OOM),您要做的第一件事就是調整 Cloudscape pageCache。 可以安全分配給 pageCache 的內存受到多種因素的影響:物理內存、 pageSize 的平均大小和 JVM 的最大 Heap 大?。╩axHeap)是最主要的因素?;镜姆椒ㄊ前凑?JVM 最大 Heap 大小的一定比例,計算分配給 pageCache 的頁(yè)數。
JVM 最大 Heap 大小
JVM 最大 Heap 大?。╩axHeap)是用 Java 參數"-Xmx#m"設置的,其中 # 是分配給堆的最大 Mb 數(如 java -Xmx128m 即分配 128 Mb 的 maxHeap)。一定要保證規定的 JVM 最大堆長(cháng)度小于機器的物理內存。
JVM MaxHeap 和 Cloudscape PageCache 的聯(lián)系
使用 Cloudscape 4.0 和 Java 1.4.0 進(jìn)行內部測試表明,將 heapSize 和 Cloudscape pageCache 的比例設置為 20:1 是安全的。這個(gè)比例足以支持活動(dòng)非常頻繁的應用程序,很多應用程序采用較小的比例也能工作得很好。每秒鐘內處理的事務(wù)量更大的應用程序,即使采用更大的 JVM maxHeap 和 Cloudscape pageCache 比例,也可能會(huì )出現 OutOfMemory 異常。如果遇到 OOM,我們建議您進(jìn)行重負荷測試來(lái)確定最佳的系統比例。首先將 JVM 和 pageCache 的比例設為 20:1,然后長(cháng)期進(jìn)行重負荷測試,以檢查內存使用的穩定性。如果沒(méi)有出現 OOM,則采用較小的比例繼續測試,直到獲得可以接受的吞吐量或者應用程序遇到 OutOfMemory 異常。輕型的應用程序甚至能在 2.5:1 的比例下運行。 Cloudscape 5.1 版采用 16:1 的默認比例(pageCache [= 4 MB cache] 和 64K maxHeap),多數應用程序都能在這個(gè)比例下很好地工作。最佳比例是能夠提供足夠的性能而又不會(huì )出現 OOM 的比例。
PageCache:計算
Cloudscape pageCache 是由數據庫使用的平均 pagesize 決定的,可以通過(guò)屬性 cloudscape.storage.pageCacheSize 對其進(jìn)行設置。 pageCache 規定了 Cloudscape 頁(yè)面緩沖區能夠保存的最大頁(yè)面數。估計 pageCache 所用內存需要用 pageCache 乘上數據庫中的平均頁(yè)面大?。P(guān)于頁(yè)面大小的更多信息,請參考關(guān)于 cloudscape.storage.pageSize 屬性的文檔)。 如果數據庫中所有表都使用默認的 4K 頁(yè)面大小,計算起來(lái)非常簡(jiǎn)單: (pgSz = 4k) x (pageCache 設置)。
JVM Heap 和 PageCache 的比例:計算
對于運行在 1.4 版和更低版本 JVM 上的 Cloudscape 4.0, 默認的 heap:pageCache 比例是(如果沒(méi)有設置 maxHeap 和 pageCache) 400:1(64M / (40*4K)/1000)。在 5.0 版中,pageCache 的默認大小從 40 增加到了 1000,相應的比例變成了 16:1 (64M / ( (1000*4)/1000 ) )。對于非?;钴S的應用程序,這個(gè)比例可能太小,因此使用 5.0 版的默認比例可能造成 OOM。
問(wèn):如何設置 Cloudscape 開(kāi)發(fā)環(huán)境?
答: 按照下述說(shuō)明設置開(kāi)發(fā)測試環(huán)境中的 Cloudscape 屬性,能夠避免自動(dòng)刪除 Cloudscape 日志并記錄下所有的錯誤和警告。使用這些設置時(shí),Cloudscape 不再是零管理系統,因此需要注意日志文件的大小。一定不要在零管理非常重要的產(chǎn)品環(huán)境中使用這些屬性。
設置這些屬性最簡(jiǎn)單的辦法是創(chuàng )建一個(gè)文件,將其命名為 cloudscape.properties,放在 Cloudscape system.home 目錄中(通常和包含 Cloudscape 日志文件的目錄相同)。也可以在 Java 命令行中使用 -D 參數指定每一個(gè)屬性。重新啟動(dòng) Cloudscape 之后,修改的屬性才能生效。下面是用于開(kāi)發(fā)測試環(huán)境的屬性文件,其中帶有注釋?zhuān)?
# 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
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。