timescape.jugem.jp

IBM Cloudscape、Apache Derbyについて
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | -
「Cloudscape FAQ 要約」(「A compendium of Cloudscape frequently asked questions」日本語訳)
(http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0408bradbury/index.htmlを日本語訳してみたものです)

レベル : 入門

Stanley Bradbury (mailto:bradbury@us.ibm.com?cc=&subject=A compendium of Cloudscape frequently asked questions)Advanced Support - Cloudscape, IBM
2004年8月3日
更新日 : 2004年8月3日
Cloudscapeはわずかなフットプリントでマルチユーザーに対応し、多くの標準に準拠するリレーショナルデータベースシステムです。完全にJavaで書かれているため、Javaアプリケーションやサーバーに容易に組み込み可能です。この技術文書では、Cloudscapeに関する代表的な質問にお答えします。

一般的な質問

Q: Cloudscape Version 10.0って?
A: Cloudscapeはわずかなフットプリントでマルチユーザーに対応し、多くの標準に準拠するリレーショナルデータベースシステムです。完全にJavaで書かれているため、Javaアプリケーションやサーバーに簡単に組み込めます。Cloudscapeはフル機能を実装するJVMであれば、どのJVMでも稼動します。つまり同一のCloudscapeアプリケーションが、さまざまなハードウエアプラットフォーム上で書き換えなしに動作します。

CloudscapeはSQL-92E(entry)標準をサポートし、SQL-99の一部を実装します。APIはJDBCです。Cloudscapeデータベースの管理作業は一切、不要です。つまりアプリケーションとは別の、インストール作業や管理作業は必要ありません。「インストールしたら、あとは知らない」。この目標が、成功する組み込み部品の秘訣です。

Q: 組み込み("embedded")って?
A: Merriam Webster OnLine Dictionary (http://m-w.com)の定義は次の通りです。
em-bed-ded; em-bed-ding
他動詞的に1 a : 内部にしっかりと、母体のように取り込むこと <岩石の中の化石 fossils embedded in stone> b : 何かを絶対不可欠な部分要素とすること <我々の言語に組み込まれた偏見 the prejudices embedded in our language> c : 指示物質に逡巡し封入した切片用の(顕微鏡見本を)準備すること
2 : しっかりと取り囲むこと <甘い果肉がプラムの種を包む a sweet pulp embeds the plum seed>
自動詞的に取り囲まれること

[訳注 英辞郎 on the Web http://www.alc.co.jpの定義は次の通りです。
embedded 【形-1】 埋め込まれた、内蔵された、組み込みの 【形-2】 部隊{ぶたい}と同行{どうこう}の ]

「組み込みCloudscape(Embedded Cloudscape)」とは、アプリケーションとは別にデータベースサーバーが存在しないことを意味します。Cloudscapeは一つのJARファイルとデータベースファイルという構成で、Javaアプリケーションと共にインストールされます。Cloudscapeはアプリケーションが稼動するJVMと同一のJVMで稼動し、アプリケーションから起動され、停止されます。エンドユーザーがアプリケーション内部のデータベースシステムの存在を意識する必要はありません。Cloudscapeにより、リレーショナルデータベースシステムの全機能を含みながら簡単に配布可能なアプリケーションを作成できます。

Q: 組み込みCloudscapeは、マルチユーザー対応データベースですか?
A: はい。Cloudscapeはマルチユーザーアクセスをサポートしています。マニュアルではシングルユーザーアプリケーションでのCloudscapeについて紙面を割いており、実際、Cloudscapeはこのアーキテクチャでの実行に適しますが、シングルユーザー専用のデータベースではありません。マルチユーザーをサポートするとはCloudscapeエンジンが必要に応じて複数の、分離したトランザクションを管理できることを意味します。Cloudscapeは組み込み環境においても、複数並行接続をサポートします。各接続はそれぞれ独立したトランザクションを表します。つまり一つのアプリケーションが複数の、独立したトランザクションを実行できます。各接続に対しては4つのトランザクション分離レベルのうちどれかを設定して、必要なレベルの並行性を獲得できます。トランザクション分離レベル、並行性、ロック機能の詳細については「開発者ガイド(Cloudscape Developers Guide)」を参照してください。

重要なポイントとしてCloudscapeのJARファイルにはネットワーク関連のコードは含まれません。こう聞くとしばしば誤解されるので繰り返しますが、だからと言ってCloudscapeがシングルユーザー専用という意味ではありません。ネットワークメッセージが必要とされるのは、Cloudscapeエンジンが稼動するJVMの外部とプロセス間通信を行う場合です。2つの独立したプロセス間での通信は「クライアントサーバー」と呼ばれます。クライアントサーバーのニーズを満たすため、Cloudscapeでは、別個のJARファイルとしてネットワークサーバー(Network Server)が提供されます。必要であればCloudscapeをネットワークサーバーに組み込み、簡単にクライアントサーバー型の接続を提供できます。Cloudscapeはまた、他の多くのサーバープログラム、たとえばWebSphere、Apache Tomecatなどにも簡単に組み込めます。選択はあなた次第です。

Q: なぜCloudscapeの基本製品では、クライアントサーバー機能が提供されないのですか?
A: 多くのアプリケーションは完全に単一のシステムで稼動するからです。アプリケーションは一つのプロセス内で稼動し、クライアントサーバー機能を必要としません。たとえばWebフォームで入力されたデータを保存するサーブレットや、PC上で動作する住所録アプリケーションでは他のプロセスと通信する必要はありません。クライアントサーバー機能はアプリケーションのフットプリントを増やすだけで、メリットはありません。Cloudscapeは不要なネットワークコード以外の、すべてのリレーショナルデータベースの利点をアプリケーションに提供します。クライアントサーバー機能が必要であれば、ネットワークサーバー、または他のサーバーアーキテクチャを実行し、インスタンスに対して差分的に追加できます。

インストール

Q: Cloudscpae環境のインストール方法を教えてください。
A: インストールはとても簡単で、Java版インストーラを使えばプラットフォームに依存しません(ただしインストールを開始するコマンドの構文、インストール先のパスの指定はプラットフォームに依存します)。ここではJava版インストーラを使用した、大まかな流れを紹介します。特定のプラットフォーム用のインストーラも提供されています。プラットフォーム専用インストーラの詳細については、それぞれのinstall.htmlを参照してください。
[訳注 : Java版インストーラのinstall_java.html日本語訳はこちら]

インストールには実行可能なJVMと、ファイルシステム上にディスクスペースが必要です。JARファイルのみであれば約4MB、Cloudscape全機能とJavaDoc、サンプルを含むと24MB、Cloudscape全機能とIBM JREであれば64MB(Windowsのみ)必要です。なおこの数字に、インストール用JARファイルのサイズは含まれません。

OSのコマンドプロンプトで、Cloudscapeインストール用JARファイルのあるディレクトリに移動し、次のように入力してインストーラを起動します。
(java/binへのパス)¥java -cp. -jar (Cloudscapeインストール用JARファイル)

ここで、
  • (java/binへのパス)は、ファイルjava.exeへのフルパスです(通常、環境変数JAVA_HOMEの値です)。
  • (Cloudscapeインストール用JARファイル)は、インストール用のJARファイルです。

インストール手順を次に示します。
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(終了)」をクリックします。

構成/セットアップ

Q: Cloudscapeの配布において、基本のコンポーネントはどれですか?
A: アプリケーション配布においてキーとなるCloudscapeコンポーネントは
    1) JARファイル群
    2) データベースファイル群
    3) Cloudscapeログ
の3種類です。以上のファイルはすべてのCloudscapeの配布に含まれ、任意のデータベース関連処理やデバッグ処理が行われる前に、コピーされていなければなりません。

Cloudscapeの配布を語る上では、Cloudscpaeシステムホーム(Cloudscape System Home)のコンセプトも重要です。Cloudscapeシステムホームは、すべてのCoudscape関連ファイル、つまりCloudscapeデータベースと、ログが作成されるデフォルトの位置を表します。Cloudscapeシステムホームはcloudscape.system.homeプロパティで定義されます。この定義がない場合、Cloudscapeエンジンを実行するJVMプロセスのカレントディレクトリがデフォルトとして使用されます。製品の配布やドキュメントでディレクトリについて言及する場合は、明示的にCloudscapeシステムホームを定義する方がよいでしょう。cloudscape.system.homeプロパティは、最初にデータベースに接続するよりも前、すなわちCloudscapeエンジンを開始する前に設定してください。

Cloudscapeのデフォルトのログファイル名はcloudscape.logです。ログファイル名は変更可能なため、アプリケーションによっては変更する場合があります。ログファイルの書き出し先ディレクトリは、デフォルトでcloudscape.system.homeディレクトリです。このデフォルト値は変更しない方がよいでしょう。ログファイルはあらゆるレベルでのデータベースの調査、デバッグで必要になります。Cloudscapeを使用したアプリケーションを配布する場合、ログファイルの場所と名前を事前に正しく把握していることは必須です。ログにはCloudscapeエンジンから起動された、すべてのデータベースのリストが発生したすべてのエラーと共に出力されます。追加のメッセージをログに出力するには、cloudscape.stream.error.logSeverityLevelを設定します。詳細については「チューニング(Cloudscape Tuning Guide)」の「Cloudscapeプロパティー」を参照してください。

データベースファイル(例:c2a10.dat)、トランザクションログファイル(例:log2.dat)はメインのデータベースディレクトリ下のサブディレクトリにあります。メインのデータベースディレクトリは、データベースと同じ名前(例:toursDB)を持ちます。データベースを起動するにはデータベースディレクトリへのパスが必要です。メインのデータベースディレクトリには少なくとも2つのサブディレクトリが含まれます。

  • 'seg0'にはデータファイルが含まれます。
  • 'log'にはトランザクションログファイルが含まれます。

このディレクトリ内のファイルには直接、アクセスしないで下さい。

cs.jarファイルには、Cloudscapeエンジンを実行するコードが含まれています。Cloudscapeドライバのロードとデータベースの起動のため、cs.jarファイルにはクラスパスでの指定が必要です。また、Cloudscape開発環境には配布可能なオプションのJARファイルも含まれます。それらは次の通りです。
  • cstools.jar - ツール「ij」と「cslook」
    • ij - Cloudscape対話型JDBCスクリプトツールと、SQLコマンド行インタフェース
    • cslook - Cloudscapeデータベース内オブジェクトのデータ定義言語(DDL)を参照したり、ダンプするユーティリティ
  • csnet.jar - Cloudscapeネットワークサーバー
  • db2jcc.jardb2jcc_license_c.jar - Cloudscapeネットワークサーバークライアント接続JARファイル

一般的な使用/機能(基本)

Q: スキーマ(schema)とデータベースの違いを教えてください。
A: Cloudscapeデータベースはスキーマの集まりです。各スキーマにはテーブルの集合が含まれ、すべてのテーブルは同じデータディクショナリー(SYSスキーマのシステムテーブル)で定義されます。ディスク上においてデータベースは、seg0ディレクトリにあるデータファイルの集合と、logディレクトリにあるトランザクションログファイルの集合とから構成されます。トランザクションはデータベースをまたがれませんが、同じデータベースのスキーマはまたがれます。単一のCloudscapeエンジンから複数のデータベースを開く詳細については、「Q. Cloudscapeシステムで、アプリケーションはどのように1つ以上のデータベースに接続しますか?」を参照してください。

Cloudscapeはスキーマを実装し、単一データベース内に、複数の名前空間を提供します。スキーマは複数のテーブルを単一の論理グループに関連付けます。スキーマに関連する個別のディスクファイルはありません。ある任意のデータベースのすべてのスキーマは、データディクショナリーとトランザクションログを共有します。単一のSQLステートメントから複数のスキーマを参照できます。このときSQLステートメントは同じ接続内で実行されます(オープンは必要ありません)。ある任意のデータベースのスキーマ間のSQL操作は、トランザクション性を持ちます。

Q: Cloudscapeシステムで、単一のアプリケーションから、1つ以上のデータベースに接続する方法を教えてください。
A: 単一のアプリケーションから複数の接続をオープンし、それぞれ異なるデータベースに接続できます。ただしインスタンス/接続は、SQLのデータベース間操作に関して互いを知りません。2つのデータベース間、接続間のすべての操作はアプリケーションレベルで行われる必要があり(つまり、単一のSQLステートメントレベルではない)、結果は表示されるか、適切な場所に書き出されなければなりません。

例として、データベースAからテーブルONEを照会して配列に格納し、データベースBからテーブルTWOを照会して別の配列に格納するものとします。それぞれの配列の中のデータをループして、必要であれば値を変更し、オリジナルのデータベースのテーブルに書き戻します。テーブルONEとテーブルTWOを同じデータベース内の異なるスキーマとして作成すると、単一トランザクション内のSQLを使用して同じ操作を実行できます。

パフォーマンス

Q: キャッシュのヒット率を上げ、ディスクI/Oを減らすCloudscapeのチューニング方法について教えてください。
A: 大量のデータを処理するシステムでは、Cloudscapeが利用可能なデータキャッシュを増やすことでパフォーマンスを上げ、ディスクI/Oを減らせます。パフォーマンスに関するキャッシュサイズの目標は、OutOfMemory例外を避けながら、データベース内の全データが保持できる所まで、できるだけ大きな値をpageCacheに設定することです。おおよその(しかし大きめに)データベース内のデータ量を算出するには、seg0ディレクトリ内のデータファイルのトータルサイズを取得します。ここでデータファイルにはフリースペースも含まれるため、データファイルのトータルサイズは常に、データベースの実際の総レコード数より大きくなります。算出でのエラーを最小にするには、データファイルのトータルサイズを取得する前に、データベースを圧縮しておきます。なお、ここで算出された値よりpageCacheを大きくしても意味はありません。通常であれば、それよりかなり少ないキャッシュで十分なパフォーマンスを得られます。

最適なキャッシュサイズを得るには、1) キャッシュの増加がパフォーマンスを向上すること、2) JVMの利用可能なメモリー量(最大ヒープサイズ)を超過しないこと、の2点を確認しながら繰り返しテストを行います。CloudscapeのpageCacheに不必要に大きな数字を設定すると、JVMがクラッシュします。OutOfMemory例外を避けるには、次のファクターのバランスを取ってください。

  • コンピュータの物理メモリ。JVMは物理メモリ内に格納できなければなりません。
  • JVMに許可された最大ヒープサイズ(-Xmxオプション)
  • CloudscapeのpageCacheのサイズ(pageCache * 平均ページサイズ)

この値の調整方法についてはこの文書の「問題解決」「Cloudscape実行中に、OutOfMemory例外を回避する方法を教えてください」を参照してください。


問題解決

Q: Cloudscape実行中に、OutOfMemory例外を回避する方法を教えてください。
A: これからのセクションでは、Cloudscapeのメモリーの使用について詳細を述べ、次にOutOfMemory例外を回避する、CloudscapeとJVMのサイズ調整について手順を紹介します。

Cloudscapeのメモリー使用に関する要因
Cloudscapeのパフォーマンスに不満を覚えたり、OutOfMemory例外が発生する場合、まず最初にCloudscapeのpageCache値を調整してみてください。pageCacheに安全に割り当てられるメモリー量はさまざまな要因に左右されますが、主な要因には物理メモリー、平均pageSize、JVMの最大ヒープサイズ(maxHeap)が挙げられます。基本的な算出方法としては、JVM最大ヒープサイズとの割合でpageCache値への割り当てページ数を求めます。

JVMの最大ヒープサイズ
JVMの最大ヒープサイズ(maxHeap)は、javaコマンドの引数「-Xmx#m」で指定します。このとき「#」は、ヒープに割り当てるメモリーの最大値をMB単位で指定します(例 : java -Xmx128m は、128MBのmaxHeapを割り当てる)。注意点としてJVMの最大ヒープサイズには、コンピュータの総物理メモリー容量より小さな値を指定してください。

JVMの最大ヒープサイズと、Cloudscapeのページキャッシュとの関係
Cloudscape 4.0とJava 1.4.0を使ったテストでは、JVMのヒープサイズに対するCloudscapeのpageChache値は20:1になるまで、すなわちJVMヒープサイズの1/20の量まで安全に設定できることが確認されました。ただしこの値は非常に重いアプリケーションの場合で、ほとんどの場合はもっと少ない値で正常に動作します。逆に秒当たり非常に多くのトランザクションを処理するアプリケーションでは、pageCacheの量を多くし過ぎるとOutOfMemory例外が発生します。このときにはストレステストを実施して、システムに最適な値を求めてください。それにはまずpageCacheをJVMヒープサイズの1/20に設定し、長時間のストレステストを実行して、どこでメモリ使用量が安定するかを見ます。ここでOutOfMemory例外が発生しないようなら、pageCache値を増やして、さらにテストを実行します。これを十分なパフォーマンスが得られるまで、またはOutOfMemory例外が発生するまで繰り返します。非常に軽量なアプリケーションの場合、ヒープ:キャッシュの割合は2.5:1でも稼動します。Cloudscape Version 5.1のデフォルトのヒープとキャッシュの割合は16:1です(64MB Java MaxHeapに対して、1000 pageCache = 4MBのキャッシュ)。ほとんどのアプリケーションは、これで十分に動作します。最適な割合を使用すると、十分なパフォーマンスを得られると同時に、OutOfMemory例外を回避できます。

PageCache : 計算しましょう
CloudscapeのpageCacheサイズは、データベースで使用される平均ページサイズと、cloudscape.storage.pageCacheSizeプロパティの値から得られます。pageCacheの値はCloudscapeページキャッシュで使用される、最大のページ数です。pageCacheで使用されるメモリーサイズを求めるにはpageCacheと、データベース内の平均ページサイズとを掛け合わせます(ページサイズの詳細については、マニュアルのプロパティcloudscape.storage.pageSizeを参照してください)。データベース内のすべてのテーブルに対してデフォルトのページサイズ4KBを使用している場合、話しは簡単で、4KB(ページサイズ) x pageCacheがメモリーサイズです。

JVMのヒープとPageCacheとの割合 : 計算しましょう
デフォルトのJVMヒープとpageCacheの割合は、JVM 1.4上で稼動するCloudscape Version 4.0で、maxHeapもpageCacheも設定されていない場合、400:1以下です(64M / ( (40 x 4KB) / 1000 )))。Cloudscape Version 5.0のデフォルトpageCacheサイズは、40ページから1000ページに増え、デフォルトの割合も16:1(64M / ( (1000x4) / 1000) ))になりました。非常にトランザクション量の多いアプリケーションの場合、version 5.0のデフォルトのまま使用すると値が小さすぎるために、OutOfMemory例外が発生する場合があります。

Q: Cloudscape用開発環境の設定方法を教えてください。
A: 開発環境とテスト環境の両方に、以下で紹介するCloudscapeプロパティを設定してください。このときCloudscapeのログは自動で削除されず、すべてのエラーと警告が記録されます。通常Cloudscapeは管理不要のシステムですが、この状態ではログファイルのサイズを監視しなければならないことに注意してください。出荷する製品に組み込むCloudscapeでは、絶対にこのプロパティを使用しないで下さい。出荷する製品において、管理の不要性はもっとも重要です。

プロパティを設定するもっとも簡単な方法は、Cloudscape system.homeディレクトリにファイル「cloudscape.properties」を作成することです。一般にsystem.homeディレクトリは、Cloudscapeのログファイルを含むディレクトリと同一です。代替として、javaのコマンド引数「-D」に、個別にプロパティを指定できます。プロパティの変更を反映するにはCloudscapeの再起動が必要です。次のリストは開発環境、テスト環境で利用可能な、コメント付きのプロパティファイルです。
# サンプルの開始
# これはサンプルのCloudscapeプロパティファイルです。開発環境や
# トラブルシューティング時に有用なプロパティ設定を示します。
#
#  -- ログファイルにログを追記します。上書きしません。
#   - ログファイルが大きくなった場合は手動で削除してください。
cloudscape.infolog.append=true
#
#  -- レベルに関わらず、すべてのエラーとメッセージログします。
#     デッドロックも含まれます。
cloudscape.stream.error.logSeverityLevel=0
#
#  -- すべてのロックタイムアウトを、追加のトレース情報付きでログします。
cloudscape.locks.monitor=true
#
# - ロックタイムアウト、デッドロックによって中断させられたトランザクションと
#   残ったトランザクションについて情報をリストします。
cloudscape.locks.deadlockTrace=true
# サンプルの終了

参考資料

著者について
Stanley Bradburyは、2001年からCloudscapeのサードレベル顧客サポートを担当しています。それ以前はバイオ、製造、インターネットセキュリティサービス関連の仕事をしていました。カリフォルニア大学バークレイ校の出身で、家族と過ごす時間を楽しみにしています。
| Cloudscape日本語訳 | 01:56 | comments(1) | trackbacks(1)
技術記事一覧(as of 2004/10/10)
developerWorks内の記事一覧です。「Cloudscape」を「Derby」で読み替えれば、Derbyでも使えるでしょう。

■ 記事 (★ : 拙訳あり、☆ : 訳出中)
  • IBM Cloudscape: 概要 ()
  • Apache Derbyを使用するPerlアプリケーションの開発
  • PHPアプリケーションからApache Derbyへの接続
  • CloudscapeとODBC
  • Apache Derbyを使用したODBCプログラミング
  • 「クロスプラットフォーム用SQLリファレンス」の中で、Derbyではサポートされない機能
  • IBM Cloudscape: Javaクラスパスの理解
  • CloudscapeとTomcatoの統合 : サーブレットコンテナへのデータベースマネージャの組み込み方法
  • Cloudscape 5.1からDB2への移行
  • Cloudscape FAQ (☆)
| Cloudscape | 02:15 | comments(0) | trackbacks(0)
日本語マニュアル
Cloudscapeの日本語マニュアルが出ました。

http://www-306.ibm.com/software/data/cloudscape/pubs/collateral.html

「Cloudscape」を「Derby」で読み替えれば、Derbyでも使えると思います。
なお参照先では未訳になっている「Technical Overview」については拙訳があります。
http://timescape.jugem.jp/?eid=10

| Cloudscape日本語訳 | 01:37 | comments(0) | trackbacks(0)
「Cloudscape Version 10: テクニカルオーバービュー」(「Cloudscape Version 10: A technical overview」日本語訳)
(http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0408anderson/index.htmlを日本語訳してみたものです)

レベル : 入門

Kathy Saunders (ksaunder@us.ibm.com), Cloudscape Release and QA Manager, IBM
Jean Anderson (jander@us.ibm.com), Cloudscape Community Architect, IBM

2004年8月3日

IBM Cloudscapeは軽量でピュアJavaの組み込み可能(embeddable)アーキテクチャを採用したデータベースエンジンです。その特徴からCloudscapeはデータベース中心の、Javaアプリケーションを配布する上で理想的なデータベースエンジンです。Cloudscapeによりデータベースエンジンはアプリケーションの一部となり、個別のインストールや管理は必要なくなりました。この記事ではCloudscapeのJavaに対して組み込み可能なSQLデータベースエンジンを中心に、Clouscapeの技術的な特徴について概説します。


Cloudscapeの技術資料
Cloudscapeで開発を始めるに当たり、技術資料の出発点としてはdeveloperWorksの「Cloudscape technical resource center」が最適でしょう。ハウツー記事、FAQ、フォーラム、ドキュメントなどへのリンクが集められています。

入門
Cloudscpaeは軽量、組み込み可能なリレーショナルデータベースエンジンで、Javaクラスライブラリの形を取ります。CloudscapeのネイティブインターフェースはJava Database Connectivity (JDBC)、およびJava-relational extensionsです。SQL92E標準を実装し、多くのSQL 99 extensisonsもサポートします。エンジンはトランザクションとクラッシュリカバリー機能をサポートし、複数接続、単一接続に対するマルチスレッドもサポートされます。Cloudscapeは任意のJavaアプリケーションプログラム、サーバーフレームワークにも簡単に組み込めます。Cloudscapeの実体はJavaクラスライブラリのため、Javaとの親和性に妥協する必要はありません。Cloudscapeでは複雑なSQLトランザクションとJDBCがサポートされ、スケールアウトが必要であれば別のSQLデータベース、たとえばIBM DB2ユニバーサルデータベースへ移行できます。


IBM、データベースソフトウエアをApache Software Foundation (ASF)に寄与
IBMは「Derby」として、Cloudscapeリレーショナルデータベース製品の現行バージョンと同一コピーをASFに提供しました。目的はデータドリブンなJavaアプリケーション関連における、発明促進の支援です。Derbyはデータベース管理システムにおけるビジネスの創造、利用、発明を支援するIBM戦略の、次のステップです。

「Cloudscapeネットワークサーバー(Cloudscape Network Server)」は、Cloudscapeデータベースに対する単一システム内、またはネットワーク越しの複数ユーザー接続を提供します。Cloudscapeネットワークサーバーはクライアントからのクエリーに対し、標準分散データベースアーキテクチャプロトコル(Distributed Database Architecture, DRDA)を使用して応答します。Cloudscapeネットワークサーバー経由でデータベースにアクセスするにはIBM JDBCドライバー、DB2 UDB JDBCユニバーサルドライバーを使用します(なおCloudscapeネットワークサーバーではすべてのCloudscapeの機能はサポートされません。詳細については「Cloudscape Server and Administration Guide」を参照してください)。

Cloudscapeが他のデータベースシステムと異なる、技術的な特徴について挙げます。

  • Cloudscapeは管理が簡単です。クライアントアプリケーションに組み込まれる場合、Cloudscapeシステムの管理操作は必要ありません。
  • Cloudscpaeは組み込み可能です。アプリケーションは自身のプロセス内にデータベースマネジメントシステム(DBMS)エンジンを組み込めます。別プロセス、別サービスのデータベース管理は必要ありません。
  • Cloudscapeは別プロセスで実行できます。実行にあたってはCloudscpaeネットワークサーバーフレームワーク、またはサーバーフレームワークの使用を選択できます。
  • CloudscapeはピュアJavaのクラスライブラリです。これはJava開発者にとって重要で、開発者はJavaテクノロジーの利点、たとえばプラットフォームからの独立や、構成の簡便さ、インストールの簡便さなどをデータベースアプリケーションでも保持できます。
  • Cloudscapeは固有のJava仮想マシン(JVM)と必要としません。完全にJava言語で書かれており、任意の認定済みJVM上で稼動します。
  • CloudscapeのDBMSエンジンは軽量です。約2MBのクラスファイルであり、わずか4MBのJavaヒープしか使いません。
  • Cloudscapeはストアードプロシージャや関数をJavaで記述できます。アプリケーションはバックエンド層、中間層などどの層でもストアードプロシージャや関数を実行できます。Cloudscapeに固有のストアードプロシージャ言語はなく、標準のJDBCを使用します。

一方、Cloudscapeには他のリレーショナルデータベースシステムと同様の機能もあります。CloudscapeではSQL92E言語標準、およびJDBC API標準が実装されます。コミット、ロールバックのトランザクション機能を持ち、分離レベルを使用した並行接続をサポート、クラッシュリカバリー機能を提供します。他のデータベース同様、複数スレッドで単一の接続を共有でき、多くのSQL99機能がJava拡張機能と共に実装されます。

この独特の機能の組み合わせにより、アプリケーション開発者はパーベイシブで(任意の場所で実行可能)、配布し易く(ダウンロード可能)、管理しやすく、拡張性に優れ、接続の容易な、データ中心アプリケーションを構築できます。この記事で解説する機能は次の通りです。

  • アーキテクチャ全般
    • 組み込み可能なクラスライブラリとしてのデータベースエンジン
    • プログラマ用アプリケーションプログラミングインターフェース(API)
    • 2つのJDBCドライバー
  • リレーショナルデータベースマネジメントシステム(RDBMS)機能
  • セキュリティ機能
    • 署名済みJavaクラスファイルアーカイブ(JAR)ファイル
    • 暗号化されたデータベース
    • 外部ユーザー認証
  • Java拡張機能
    • Java関数
    • トリガー内でのJava関数の使用
    • Javaストアードプロシージャ
    • データベースからのJavaクラスのロード
  • まとめ

アーキテクチャ全般
CloudscapeはJavaクラスライブラリとして実装された、リレーショナルデータベースマネジメントエンジンです。アプリケーションからCloudscapeエンジンで管理されたデータにアクセスするにはJDBC APIを使用します。

組み込み可能なクラスライブラリとしてのデータベースエンジン
Cloudscapeデータベースエンジンは組み込み可能です。これはデータベースエンジンを別プロセスとしてでなく、アプリケーションの一部として、同一のJVM内で実行できることを意味します。データベースエンジンが組み込まれている場合、アプリケーションはJDBC APIを使用してデータベースにアクセスします。組み込みJDBCドライバーはネットワークを経由せずに、データベースエンジンとデータの受け渡しを行います。組み込まれているかどうかに関わらずデータベースエンジンは、複数の同時接続、およびマルチスレッドアプリケーションからのアクセスをサポートします。

図1 : アプリケーションに組み込まれたCloudscape
図1 : アプリケーションに組み込まれたCloudscape

Cloudscapeはまた伝統的なクライアントサーバー型データベースサーバーとしても配布できます。この場合、Cloudscapeはサーバーフレームワークに組み込まれます。サーバーフレームワークとは単純なソフトウエア部品で、ネットワーク接続を受け付け処理します。Cloudscapeサーバーエディションであれば「Cloudscapeネットワークサーバー」が利用可能です。Cloudscapeはユーザーが選択したサーバーフレームワーク内でも稼動します。

図2 : サーバーフレームワーク内で、クライアントサーバー型DBMSとして稼動するCloudscape
図2 : サーバーフレームワーク内で、クライアントサーバー型DBMSとして稼動するCloudscape

CloudscapeはJava Webサーバー内、たとえばIBM WebSphere Application Server内に簡単に組み込めます。図3にJava Webサーバーに組み込まれたCloudscapeを示します。クライアントはservletに対する、HTTP(Hypertext Transfer Protocol)リクエストとしてデータベースにアクセスします。

図3 : Webサーバーに組み込んだCloudscape
図3 : Webサーバーに組み込んだCloudscape

Cloudscapeはハードディスク内のファイルにデータを保存することで永続性を保障します。Cloudscapeエンジンは、1つ以上のデータベースファイルを管理できますが、各データベースファイルは単一のCloudscapeエンジンからのみアクセスできます。クライアントサーバー型構成では、Cloudscapeエンジンはその管理の元、データベースに対する複数ユーザー接続機能が提供されます。データベースにアクセスするすべてのスレッドはデータベースエンジン経由でアクセスします。

図4 : Cloudscapeにアクセスするスレッド
図4 : Cloudscapeにアクセスするスレッド

データベースディスクファイル内のデータは、ポータブルな形で保存されています。このためデータベースはCPUアーキテクチャの違いに関係なく、任意のコンピュータへ移動できます。またCloudscapeはリードオンリーのメディアに保存されたデータも処理できます。したがってCloudscapeアプリケーションは、使用するデータベースと一緒に簡単にダウンロードしたり、CD-ROMから直接実行できます。ポータブルな形式のデータベースとピュアJavaなDBMSエンジンとにより、メディアやネットワークを問わず任意の場所にデータ中心のアプリケーションを送信できます。

Cloudscapeはシステムデザイナに対して最大限のフレキシビリティを提供します。各Cloudscapeインスタンスは複数のデータベースを管理でき、各データベースはさまざまなメディアで稼動します。アプリケーションは何の問題もなく他のDBMSシステムに接続できます。

図5 : フレキシブルなアプリケーションアーキテクチャ
図5 : フレキシブルなアプリケーションアーキテクチャ

プログラマ用API
アプリケーションがデータベースにアクセスする際は、業界標準のJDBC APIを使用します。クライアントアプリケーションがデータベースにデータを保存したり、データベースからデータを取得する場合、JDBC APIを通してネットワーク越しに、または組み込まれたCloudscapeエンジンに対して直接リクエストを発行します。Cloudscape固有のAPIを使用する必要はなく、JDBCのみを使用します。Cloudscapeドライバーは、指定したCloudscape JDBC接続URL(Uniform Resource Locator)により選択されます。リスト1に例を示します。

リスト1 Cloudscape JDBC接続URL
Connection conn = DriverManager.getConnection("jdbc:cloudscape:greetdb");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT message FROM greetings");
while (rs.next())
{
    String greeting = rs.getString(1);
    System.out.println(greeting);
}
rs.close();
stmt.close();
conn.close();

JDBC APIのみを使用するためアプリケーションは可搬性に優れ、JDBCをサポートする他社製のデータベースに対しても実行できます。 開発者はこの標準準拠の特徴を利用してまずCloudscapeでアプリケーションを作成し、次にこれを他のDBMSに対して展開できます。
クライアントがDBMSからデータをリクエストすると、JDBCドライバーはデータベースからアプリケーション内にデータをコピーします。意図的なもの、意図しないものに関わらずアプリケーション内データの変更は、JDBC呼び出しを使用してDBMSに送り返すまで、データベース内データには波及しません。同様に、クライアントがデータをDBMSに保存すると、データはクライアントからDBMSにコピーされます。Cloudscapeのトランザクション機能により、組み合った複数のデータ操作をトランザクションとしてグループ化できます。Cloudscapeはデータの一貫性を保証します。システム障害が発生した場合でも、データベースファイルにはトランザクション内のすべてがコミットされるか、またはトランザクション内のいずれももコミットされないか、のどちらかになることが保証されます。
図6 : DBMSからアプリケーションにコピーされたオブジェクト
図6 : DBMSからアプリケーションにコピーされたオブジェクト
JDBCについての詳細はhttp://java.sun.com/jdbcを参照してください。

2つのJDBCドライバー
CloudscapeではJavaクライアントプログラムからCloudscapeにアクセスするドライバーが2つ提供されます。ドライバーはピュアJavaで書かれたType4で、クライアントからは中間レイヤーの変換を挟まず直接データベースエンジンに接続します。「組み込みドライバー」は、Cloudscapeがアプリケーションプログラムと同一のJVM内で稼動する場合に、Cloudscpeとの通信で使用されます。「ネットワークサーバードライバー」は、Cloudscapeネットワークサーバーに同梱されるドライバーで、IBM JDBCドライバー、DB2 UDB JDBC Universalドライバーです。

Cloudscapeデータベースに対するJDBC接続URLはすべて接頭辞「jdbc:cloudscape:」で始まります。組み込みデータベースに対する接続URLは、データベースがEドライブにある場合、「jdbc:cloudscape:e:/db」のようになります。ネットワークサーバーに対する接続URLは「jdbc:cloudscape:net://localhost:1527/mydb」のようになります。

Cloudscape JDBCドライバーはJDBC 2.0と3.0をサポートし、JVM 1.3.1以上で動作します。またJNDIデータソース、コネクションプーリング、XA機能の標準拡張機能も提供され、分散J2EEシステムにおけるリソースマネージャとしても使用できます。

RDBMS機能
CloudscapeはSQL92E言語標準と、多くのSQL99機能をJava拡張機能と共に実装します。SQL言語のサポート一覧を次に示します。

  • 基本的なデータ型: CHAR, DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, NUMERIC, REAL, SMALLINT
  • 日時データ型(SQL92Tより): DATE, TIME, TIMESTAMP (with JDBC date/time escape syntax).
  • 他のデータ型: BIGINT, VARCHAR, CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONG VARCHAR, LONG VARCHAR FOR BIT DATA, BLOB, CLOB
  • 基本的な数値演算: +,*,-,/,unary +,unary -
  • 基本的な比較: <,>,<=,>=,<>,=
  • 日時リテラル
  • 組み込み関数: ABS or ABSVAL, CAST, LENGTH, 結合 (||), NULLIF式とCASE式, CURRENT_DATE, CURRENT_ISOLATION, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, DATE, DAY, HOUR, IDENTITY_VAL_LOCAL, LOCATE, LCASE or LOWER, LTRIM, MINUTE, MOD, MONTH, RTRIM, SECOND, SESSION_USER, SQRT, SUBSTR, TIME, TIMESTAMP, UCASE or UPPER, USER, YEAR.
  • 基本的な述部: BETWEEN, LIKE, NULL
  • 比較述部: IN, ALL, ANY/SOME, EXISTS
  • CREATE SCHEMAとDROP SCHEMA
  • CREATE TABLEとDROP TABLE
  • 制約の検査
  • ALTER TABLE: ADD COLUMNとADD CONSTRATINT、DROP CONSTRAINT
  • CREATE VIEWとDROP VIEW
  • 制約: NOT NULL, UNIQUE, PRIMARY KEY, CHECK, FOREIGN KEY
  • カスケードした削除
  • 列のデフォルト値
  • Delimited identifiers
  • データベースカーソル(JDBC経由)
  • 動的SQL (JDBC経由)
  • INSERTステートメント、UPDATEステートメント、DELETEステートメント
  • 位置指定の更新と削除
  • WHERE条件
  • GROUP BY
  • HAVING
  • ORDER BY
  • UNIONとUNION ALL
  • 式表現の副照会(SQL92Fより)
  • WHERE句内の結合
  • 結合 (SQL92T): INNER、RIGHT OUTER、LEFT OUTER、名前付き列の結合、条件付結合
  • 集合関数(DISTINCTを使用した): AVG, COUNT, MAX, MIN, SUM
  • SELECTステートメントでの計算列
  • SELECT *, SELECT table.* (SQL92T), SELECT DISTINCT, 計算列
  • 選択した列の名前付け
  • SQLSTATE
  • ビューでのUNION (SQL92T)
  • CAST (SQL92T)
  • INSERT式 (SQL92T): insert into T2 (COL) select col from T1
  • VALUES式: select * from (values (1, 2)) as foo(x, y), 等
  • トリガー


他の伝統的なデータベース機能一覧を次に示します。

  • コストベースの照会オプティマイザー。結合順序、索引の選択、バルクフェッチ、結合方法(ネステッドループ、またはハッシュ)、ソートの回避、ロックエスカレーション、副照会の解消、推移的閉包、その他多くの照会書き換え。Cloudscapeは独特のサンプリング技術を使用するため、途中での統計情報の収集は必要はありません。また照会プランの上書きや、実際の照会結果の統計情報出力もサポートされます。
  • 複数列Bツリー索引
  • 長さ制限のない列と、列の値をクライアントに「ストリーミング」する機能
  • データのインポート、エクスポート。高速なロード機能と高速な索引作成機能
  • トランザクションのコミットとロールバック
  • トランザクションの分離レベル(直列化(serializable)、再読み込み可能読み取り(repeatable read)、コミット済み読み取り(read committed)、ダーティリード(dirty read) )
  • クラッシュリカバリー
  • 複数の同時接続
  • マルチスレッド接続
  • 行ロックとテーブルロックへのエスカレーション
  • ユーザー認証と接続認証: 組み込みSH3、アプリケーション独自、外部ユーザー認証システム(LDAP、NIS+、JNIDI)
  • 診断と一貫性のチェック
  • オンラインデータベースバックアップ
  • ロケール
  • データベースの暗号化
  • スクリプトツール「ij」
  • DDLテストツール「cslook」
  • 列の長さやNULL制約の変更
  • データの自動順序番号を指定した、identity列のデフォルト値


セキュリティ機能
Cloudscapeのセキュリティ機能には署名済みJARファイルの検知、リモートサイトへのデータベースの配備、および既存ユーザー認証スキーマへの統合があります。

署名済みJARファイル
CloudscapeはJava 2環境において、JARファイルのデジタル署名を検知できます。データベースに保存された署名済みJARファイルからクラスをロードする前にCloudscapeは、JARファイルがX.509証明書で署名されていること、そして署名が妥当であることを確認します。

暗号化されたデータベース
データベースがリモートコンピュータやモバイル機器に配布されると、物理的セキュリティを使用できないため、データに対する未認証のアクセスを避けられません。パワーユーザーならデータファイルを読み出し、ファイルに含まれる情報を解読するかもしれません。このような環境でデータを保護する唯一の方法は、情報をディスク上で暗号化することです。この方法であれば、データベースを読み出されることが、即、データの漏洩にはつながりません。

Cloudscapeはリモートデータベースの、安全なデータ暗号化をサポートします。暗号化されたデータベース内のデータは、読み込みの際にデータベースエンジンによって複合化され、ハードディスクに書き戻される際には再び暗号化されます。データベースファイル内にクリアテキスト形式のデータは存在しません。データベースのすべての内容が暗号化されるため、データベーススキーマの構造もまた隠蔽されます。

暗号化されたデータベースを使用するには、データベースを最初に起動する際に、ブートパスワードを指定します。ブートパスワードは、通常のデータベース接続で使用されるユーザー名とパスワードとは異なります(ただしデータベース接続の際には、以前として通常のユーザー名、パスワードを指定します)。ブートパスワードの指定がないと、データベースは起動しません。

ファイルの物理的なセキュリティが保障されない場所へデータベースを配布するアプリケーションにとって、データベースの暗号化は有用です。たとえば、ノート型パソコン内のモバイルデータベースはパソコンが盗難されれば、同時に失われてしまいます。また複数ユーザーがアクセスするリモートサーバーにインストールされたアプリケーションは、サーバー管理者が適切なファイルのアクセス権管理を怠っている場合、未認証のアクセスを受けます。

データベースの暗号化はパフォーマンスで10%以下のオーバーヘッドしかなく、追加のディスクスペースは必要ありません。暗号化はJava Cryptographic Extension (JCE) 1.2.1に基づいています。デフォルトの暗号方法としてData Encryption Standard (DES)が使用されますが、どのアルゴリズムを使用するかは選択できます。

外部ユーザー認証
Cloudscapeでは、外部のユーザー認証スキーマへの統合もサポートされます。Cloudscapeの構成により認証ユーザーのリストを内部で管理するのでなく、外部の認証サービスを使用してユーザーを認証できます。Lightweight Directory Access Protocol (LDAP)、およびNetwork Information System (NIS+)がサポートされ、またユーザーが定義するJava Naming and Directory Interface (JNDI)クラスを使用した独自スキーマもサポートされます。

データベース内でユーザー名やパスワードの管理を行わなければデータベースに名前を転送する必要はないため、管理用のオーバーヘッドが少なくなります。これはサーバーアプリケーションを配布する際には極めて重要です。サーバーアプリケーションはできるだけ最小限の管理タスクで配布しなければならないからです。

LDAPは急速に普及しているInternet標準で、TCP/IP上で稼動するオープンなディレクトリアクセスを提供します。Netscape NT Synchronization Serviceを使用すると、LDAPを通じてWindows NTのドメインユーザー認証も提供できます。NIS+はSUNのオペレーティングシステムSolarisで使用される、NIS名前サービスの拡張版です。

Cloudscapeは組み込み型システムのため、シンプルなユーザー認証制御が提供されます。システムごと、またはデータベースごとにリードオンリーアクセス、または完全なアクセス拒否を設定してユーザーを制限できます。許可され、そして認証されたユーザーだけがデータベースにアクセスしたり、データを変更できます。

Java拡張機能
Cloudscapeでは次のJava拡張機能がサポートされます。

  • Java関数
  • トリガーでのJava関数の利用
  • Javaストアードプロシージャ
  • データベースからのJavaクラスのロード

以下の説明で使用する例では、データベースにADDRESSテーブルと、ZIPコードを都市と関連付けるZIPMAPテーブルとがあるものとします。リスト2にテーブルスキーマを示します。

リスト2 例で使用するテーブルスキーマ
CREATE TABLE address (name VARCHAR(60), street VARCHAR(255), zipcode INTEGER)
CREATE TABLE zipmap  (zipcode INTEGER, city VARCHAR(255))
Java関数
Java関数はJavaのコードから構成され、SQLから呼び出せます。SQLステートメントでSQL式が許可されている場所であればどの場所からでもJava関数を呼び出せます。またVALUES文節を使用したり、トリガーの中からでも呼び出せます。

ZipMapクラスに関数を作成し、指定されたZIPコードに対する都市名を検索する例をリスト3に示します(エラー処理、例外処理はコードの見易さのため省略します)。

リスト3 関数のソースコード例
public class ZipMap
{    
    public static String cityFromZipFunc (int zipcode)
    {
        String city;
        Connection conn = DriverManager.getConnection("jdbc:default:connection");
        String query = "SELECT city FROM zipmap WHERE zipcode = ?";
        PreparedStatement ps = conn.prepareStatement(query);
        ps.setInt(1, zipcode);
        ResultSet rs = ps.executeQuery();
        if (!rs.next())
            city = "Unknown City";
        else
            city = rs.getString(1);
        rs.close();
        ps.close();
        conn.close();
        return city;
    }
}
このJavaコードに対して関数を作成するSQLステートメントをリスト4に示します。

リスト4 CREATE FUNCTIONの例
CREATE FUNCTION cityFromZip (zipcode INTEGER)
RETURNS VARCHAR(255)
LANGUAGE JAVA 
PARAMETER STYLE JAVA
READS SQL DATA
EXTERNAL NAME 'com.acme.sales.ZipMap.cityFromZipFunc'
一度作成したcityFromZip関数は、VALUESキーワードを使用して呼び出すか、SQLステートメント内で参照できます。リスト5に例を示します。

リスト5 cityFromZip関数の使用例
VALUES cityFromZip(94105)

SELECT name, street, cityFromZip(zipcode), zipcode 
FROM   address

SELECT * 
FROM   address 
WHERE  cityFromZip(zipcode)='San Francisco'
トリガー内でのJava関数の使用
SQLトリガーでは、SQLステートメントでテーブルにデータが挿入、更新、削除されるたびに実行されるアクションを指定します。Java関数をトリガーとして使用できます。たとえばデータの更新時に電子メールによる通知を送信したり、JDBCを使用して他のデータベースも更新するなど、Javaプログラムを使用してできることなら何でも実行できます。Java関数を呼び出すトリガーの例をリスト6に示します。Java関数は、ADDRESSテーブル内に新しいレコードが挿入されると、電子メールによる警告を送信します。

リスト6 トリガー内の関数例
CREATE TRIGGER newaddress AFTER INSERT ON address
REFERENCING NEW as NEW
FOR EACH ROW MODE DB2SQL
    VALUES(sendEmailAlert(NEW.name)) 
Javaストアードプロシージャ
JavaストアードプロシージャはJavaのコードから成り、SQLから呼び出し可能で、データベースサーバー内で稼動し、データベースにアクセスします。

CloudscapeはJavaストアードプロシージャの呼び出しに、CALLステートメントをサポートします。JDBCのOUTパラメータもサポートし、値をパラメータ経由で戻せます。これにはJavaのパラメータに、型付けされた配列を指定します。たとえばint型のパラメータであればint[]、String型のパラメータであればString[]と宣言し、配列に戻りの値を格納します。ストアードプロシージャに一つでもOUTパラメータがある場合、クライアントアプリケーションはCallabelStatementインタフェースを使用してストアードプロシージャを呼び出します。ストアードプロシージャに1つもOUTパラメータがない場合は、動的SQLステートメントを実行可能な任意のツール、たとえばijツール内からでも、CALLステートメントを使用してストアードプロシージャを呼び出せます。

入力されたZIPコードに対応する都市名を検索するJavaストアードプロシージャをリスト7に示します(エラー処理、例外処理はコードの見易さのため省略します)。

リスト7 ストアードプロシージャのソースコード例
public class ZipMap
{    
    public static void cityFromZipSp (int zipcode, String[] outCity)
    {
        Connection conn = DriverManager.getConnection("jdbc:default:connection");
        String query = "SELECT city FROM zipmap WHERE zipcode = ?";
        PreparedStatement ps = conn.prepareStatement(query);
        ps.setInt(1, zipcode);
        ResultSet rs = ps.executeQuery();
        if (!rs.next())
            outCity[0] = "Unknown City";
        else
            outCity[0] = rs.getString(1);
        rs.close();
        ps.close();
        conn.close();
        return;
    }
}
ストアードプロシージャの作成方法をリスト8に示します。

リスト8 CREATE PROCEDURE例
CREATE PROCEDURE cityFromZip ( IN zipcode INTEGER, OUT city VARCHAR(255) )
PARAMETER STYLE JAVA
LANGUAGE JAVA 
READS SQL DATA
EXTERNAL NAME 'com.acme.sales.ZipMap.cityFromZipSp'
すでに述べたように、 ストアードプロシージャが一つでもOUTパラメータを含む場合、クライアントアプリケーションはCallableStatemntのメソッドを使用してストアードプロシージャを実行します。リスト9に例を示します。

リスト9 ストアードプロシージャを呼び出すクライアント例
  public static String callOutCity(int zipCode, Connection con)
  {
    String outCity = "";
    try
    {
      // prepare the CALL statement 
      String procName = "CITYFROMZIP";
      String sql = "CALL " + procName + "(?, ?)";
      CallableStatement callStmt = con.prepareCall(sql);

      // Set the input parameter to the zipcode
      callStmt.setInt(1, zipCode);

      // Register the output parameter
      callStmt.registerOutParameter(2, Types.CHAR);

      // call the stored procedure
      System.out.println();
      System.out.println("Call stored procedure named " + procName);
      callStmt.execute();

      // retrieve output parameters
      outCity = callStmt.getString(1);
      System.out.println("City name is "
                         + outCity);
    }
    catch (SQLException e)
    {
      System.out.println(e);
    }
    return(outCity);
  }
データベースからのJavaクラスのロード
Javaストアードプロシージャ、Java関数、その他のアプリケーションロジックはデータと共にデータベース内に格納でき、プログラムでデータベースからクラスをロードできます。つまりデータベースのデータとロジックを一つにまとめた自身の内部に、実行に必要なすべてを含むアプリケーションパッケージを作成できます。この結果、アプリケーションの配布は容易になります。クラスパスに起因する、問題の可能性を減らせるからです。データベースに格納されたクラスが、列のデータ型に対するロジックを含む場合は特に有用です。データベースは外部のどのリソースにも依存しなくなります。

アプリケーションクラスのデータベースへの格納、ロードは二つのメカニズムによって機能します。一つはデータベース内に対するJARファイルの追加、削除、更新機能。もう一つはデータベース内のJARファイルへクラスパスを通す機能です。

アプリケーションコードが一度データベースに追加されると、データベースの移動やコピーに伴いデータと共に、対応するアプリケーションロジックも移動することが保障されます。オブジェクトデータは、操作する手段から切り離されることはありません。

まとめ
この記事ではCloudscapeの基本アーキテクチャを概説し、クライアントアプリケーション、サーバーアプリケーションに対する組み込み方法について説明しました。また標準のJDBC呼び出しを使用したデータの操作方法について説明しました。Cloudscapeで利用可能なセキュリティ機能の概要、そしてJavaとの統合を活かした、Java関数やストアードプロシージャの作成方法についても説明しました。

Clouscapeはわずかなフットプリントの、標準に準拠したJavaデータベースです。CloudscapeはJavaによる任意のソリューションに深く、密接に組み込むことができます。強力なSQL機能、Java技術のサポート、セキュリティ、そして組み込み可能なピュアJavaアーキテクチャとこれらの組み合わせ。Cloudscapeはデータ中心のJavaアプリケーションにおける、最適なデータマネジメント製品です。

参考資料

著者について
Kathy Saundersは、最初の一般向けリリース(Version 1.2)からCloudscapeに携わっています。現在、Cloudscapeリリースマネージャ兼QAマネージャを務めています。
Jean AndersonはCloudscapeコミュニティアーキテクトで、Cloudscapeユーザーや開発者向けの技術資料の作成を中心に行っています。

| Cloudscape日本語訳 | 01:02 | comments(0) | trackbacks(0)
IBM Cloudscape入門 Version 10 Beta (doc/getstart.pdf日本語訳)
IBM Cloudscape入門 Version 10 Beta
(doc¥getstart.pdfを日本語訳してみたものです)

(Iページ)
IBM Cloudscape
Getting Started with IBM Cloudscape
Version 10 Beta
GC18-9246-00

(IIページ)
このマニュアルや製品を使用する前に、17ページ「注意」の下の概要をお読み下さい。

第1版 (2004年8月)

この文書ではIBMが所有権を持つ情報について記述されています。この情報は使用許諾条件のもと提供されていて、著作権法に保護されています。マニュアルの情報に製品の保証は含まれません。またマニュアルのどの文章も、製品の保証として解釈できません。
IBMのマニュアルはオンライン、または各地域のIBM代表で注文できます。
- オンラインで注文するには、IBM出版センター(IBM Publications Center)のWebページ http://www.ibm.com/shop/publications/orderを参照してください。
- 地域のIBM代表を探すには、IBMワールドワード問合せ先一覧(IBM Directory of Worldwide Contacts)のWebページ http://www.ibm.com/planetwide を参照してください。
[訳注:日本アイ・ビー・エム株式会社
106-8711 東京都港区六本木 3-2-12 Tel:03-3586-1111 E-mail: webmaster@jp.ibm.com Web site: www.ibm.com/jp/ ]
米国内、またはカナダからマニュアルを注文するには、1-800-IBM-4YOU (426-4968)に電話してください。
IBMに情報を送った場合、IBMはいかなる義務を負うことなく、IBMが適切と考える任意の方法で個人情報を使用、配布する非独占的な権利を供与されたものとみなします。

(C)Copyright International Business Machines Corporation 1999, 2004. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.


(IIIページ)
目次

第1章 Cloudscapeの紹介 1
配布オプション 1
システム前提条件 1

第2章 Cloudscapeのインストールと動作 3
インストーラの選択 3
Cloudscapeのインストール 4
Cloudscapeをインストールすると 4
リリースノートの参照 4
Java環境の設定 4
ツールとスタートアップユーティリティの使用 4
sysinfoの使用 5
ijの実行 5
手動による環境変数とパスの設定 5
CLOUDSCAPE_INSTALL環境変数の設定 6
クラスパスの設定 6
例題によるプログラミングの開始 6
サンプルプログラム「Simple」 7
Cloudscapeネットワークサーバーの例 7
Cloudscape文書の参照 7

第3章 JDBC経験者のためのクイックスタート 9
Cloudscapeの2つの環境 9
埋め込み環境 9
クライアントサーバー環境 9
ライブラリとクラスパス 9
ドライバー 9
データベース接続URL 10

第4章 Cloudscapeのドキュメント 11
マニュアル 11

第5章 ドキュメント表記 13
用語集 13
構文 13
使用フォント 14

付録 Cloudscapeライブラリとスクリプト: 完全リファレンス 15
Cloudscapeで提供されるライブラリ 15
Cloudscapeで提供されないライブラリ 15
Cloudscspeで提供されるスクリプト 15

注意 17
商標 19

索引 21


(1ページ)
第1章 Cloudscapeの紹介

Cloudscapeへようこそ! CloudscpaeはJavaベース、SQLベースのリレーショナルデータベースマネジメントシステム(ORDBMS)です。この章ではCloudscapeの製品について解説します。

  • 配布オプション
  • システム前提条件

■ 配布オプション
Cloudscapeはさまざまな形で配布できます。

  • シングルユーザー用Javaアプリケーションに埋め込んで配布。このときCloudscapeは事実上、ユーザーからは見えません。これはCloudscapeが管理を必要とせず、また、アプリケーションと同じJava仮想マシン(JVM)内で動作するためです。
  • マルチユーザー用Javaアプリケーションに埋め込んで配布。Webサーバー、アプリケーションサーバー、共用開発環境など。
  • サーバーフレームワークに埋め込んで配布。Cloudscapeネットワークサーバー、または希望のサーバーを使用できます。

■ システム前提条件
Cloudscapeは完全にJavaで記述されたデータベースエンジンです。任意の認定済みJava仮想マシン(JVM)で稼動します(本バージョンでテストされたプラットフォーム、Java環境のリストを取得するには、http://www.ibm.com/software/data/cloudscape/requirements.html、またはリリースノートを参照してください)。

Windows版インストーラ、またはLinux版インストーラを使用してCloudscape開発環境を作成すると、IBM JREが提供されます。

(3ページ)
第2章 Cloudscapeのインストールと動作

Cloudscape、およびJDBCプログラミングが初めての方には、以降の説明がCloudscapeのよい出発点となるでしょう。JDBCプログラミング経験者は9ページの「JDBC経験者のためのクイックスタート」以降を参照してください。

  • インストーラの選択
  • Cloudscapeのインストール
  • リリースノートの参照
  • Java環境の設定
  • ツールとスタートアップユーティリティの使用
  • 手動による環境変数とパスの設定
  • 例題によるプログラミングの開始
  • Cloudscape文書の閲覧

■ インストーラの選択
Cloudscapeでは、3つのパッケージの中からインストーラを選択できます。

Windows版 : Windows版インストーラでは、Cloudscape実行用のIBM JRE for Windowsが提供されます。Windows版インストーラはWindows専用のインストーラで、Javaの前提知識や経験なしに、マウスクリックだけでインストールできるようデザインされています。Windows版インストーラは、全体で約60MBあります。

Linux版 : Linux版インストーラでは、Cloudscape実行用のIBM JRE for Linuxが提供されます。Linux版インストーラはLinux専用のインストーラで、Javaの前提知識や経験なしに、マウスクリックだけでインストールできるようデザインされています。Linux版インストーラは、全体で約70MBあります。

Java版 : Java版インストーラにJREは含まれていません。このため他のインストーラに比べサイズは小さく、約15MBです。Java版インストーラはWindows、Linuxを含むどのオペレーティングシステムでも実行できます。前提条件としてインストール先のコンピュータには、JVM 1.3以上がインストールされている必要があります。

Java版インストーラは、異なるプラットフォーム上で、統一したインストール方法を提供できるようデザインされています。

Java版インストーラを使用するに当たって、まだJVMをインストールしていない場合、インストール先オペレーティングシステム用のJVMを提供するベンダーに問い合わせてください。

注意: JRE(Javaランタイム実行環境)は、Java SDKに含まれるコンポーネントの一部です。JREではJVMが提供され、Javaアプリケーションを実行できます。しかし、JREにはアプリケーション開発用のツールやユーティリティは含まれません。アプリケーションを開発するのであれば、Java SDKをインストールしてください。

(4ページ)
■ Cloudscapeのインストール
完全なインストール手順については、install.htmlファイルの内容に従ってください。install.htmlは、http://www-306.ibm.com/software/data/cloudscape/pubs/collateral.htmlにあります。
[訳注:日本語に翻訳してみたものが、http://timescape.jugem.jp/?eid=3にあります。]

インストーラを使用していて問題が発生した場合には、すべてのエラーメッセージと、インストールを開始する際に使用したコマンドを書き留めて置いてください。エラーメッセージとコマンドは、問題を解決するためサポート部門で使用されます。

□ Cloudscapeをインストールすると
Cloudscapeをインストールすると、すべてのファイルがハードディスク内の、指定したインストール先ディレクトリにコピーされます。

■ リリースノートを参照する
Cloudscapeリリースノートを参照し、最新の、重要な情報を入手してください。リリースノートは、Cloudscapeをインストールした先のディレクトリにあります。

■ Java環境の設定
JVM、およびJavaアプリケーションが正しく動作するようPATH環境変数を設定します。PATH環境変数を設定することで、オペレーティングシステムは任意のディレクトリから、希望のプログラムを探索できます。1つ以上のJVMをインストールしている場合、他のJVMへのパスよりも前に使用するJVMへのパスをPATH環境変数に設定しなければなりません。

注意: PATH環境変数の設定は、JVMを実行する基本的な手順の一つです。正しくCloudscapeをインストールするにはとても重要です。

PATH環境変数を設定するには次の手順に従ってください。

JVMをインストールしたディレクトリの、サブディレクトリ「bin」を、パスの先頭に追加します。

たとえばJVMのディレクトリが「C:¥JDK1.4」であれば、パスの先頭に「C:¥JDK1.4¥bin」を追加します。

パスのテスト
正しくパスが設定されたことを確認するには、次のテストを実行します。コマンドウィンドウで、次のコマンドを実行します。
java -version

パスが正しく設定されている場合、JVMのバージョンが画面に表示されます。

■ ツールとスタートアップユーティリティの使用
Cloudscapeのツールとユーティリティには、cslook、ij、sysinfo、import、export、データベースクラスユーティリティがあります。ディレクトリ「/frameworks/embedded/bin」には、埋め込みモード(embedded mode)でCloudscapeツールや、ユーティリティを実行するスクリプトが収められています。同様にCloudscapeネットワークサーバー(Network Server)でツールやユーティリティを実行するスクリプトが、ディレクトリ「/frameworks/NetworkServer/bin」にあります。スクリプトにはそれぞれ、sysinfo.bat、ij.kshなどのように、自分自身を表す名前が付けられています。クラスパス用のスクリプトと同じく、各スクリプトは、環境に応じた拡張子を持ちます。
(5ページ)
Windows: .bat

UNIX: ksh

注意: スクリプトは利用者の便宜のため、すべての環境ですぐにツールやユーティリティが使い始められるよう、例として提供されています。しかし、スクリプトが正しく動作するには、WindowsやUNIX環境においてでも、個別の変更が必要な場合があります。

コマンド名だけでCloudscapeツールを実行するには、「/frameworks/embedded/bin」ディレクトリ、または「/frameworks/NetworkServer/bin」ディレクトリをPATHに設定してください。

注意: UNIXユーザーはスクリプトに、実行権限を与えてください。たとえば次のコマンドを実行します。
chmod +x <ファイル名>

スクリプトの詳細については、15ページ「Cloudscapeで提供されるスクリプト」を参照してください。

□ sysinfoの使用
Cloudscapeのsysinfoツールを使用して、Cloudscapeのバージョンを確認できます。PATH環境変数に「/frameworks/embedded/bin」ディレクトリ、または「/frameworks/NetworkServer/bin」ディレクトリを設定すると、コマンドウィンドウで次のコマンドを入力してsysinfoを実行できます。
sysinfo

sysinfoスクリプトはクラスパスを含む、適切な環境変数を設定し、sysinfoプログラムを実行します。

□ ijの実行
ijツールを使用して、Cloudscapeデータベースに接続できます。PATH環境変数に「/frameworks/embedded/bin」ディレクトリ、または「/frameworks/NetworkServer/bin」ディレクトリを設定すると、コマンドウィンドウで次のコマンドを入力してijコマンドを実行できます。
ij

ijスクリプトはクラスパスなどの環境変数を設定し、ijプログラムを実行します。

ijでデータベースを作成するには、次のコマンドを実行します。
ij> connect ’jdbc:cloudscape:testdb;create=true’;

カレントディレクトリに「testdb」という名前のデータベースが作成され、中にシステムテーブルが作成されます。以降、ijコマンドラインにて、任意のSQLステートメントを実行できます。ijを終了するには、次のコマンドを実行します。
ij> exit;

ij実行の詳細については、マニュアル「IBM Cloudscape Tools and Utilities Guide」(¥doc¥pdf¥tools.pdf)を参照してください。

■ 手動での環境変数とパスの設定
Cloudscapeのツール用スクリプトや、ユーティリティ用スクリプトを実行しない場合は、手動でいくつかの手順を実行しなければなりません。ここでは手動の環境設定とツールの実行方法について説明します。

(6ページ)
□ CLOUDSCAPE_INSTALL環境変数の設定
Cloudscapeのインストール中に、インストール先ディレクトリを指定したと思います。ディレクトリ名には「Cloudscape_10」が推奨されました。ここからは、Cloudscapeをディレクトリ「Cloudscape_10」にインストールしたものとして説明します。

ディレクトリ「frameworks/embedded/bin」内のスクリプトを使用する予定がなく、またオペレーティングシステムが環境変数をサポートする場合、環境変数CLOUDSCAPE_INSTALLを作成し、値にCloudscapeのインストール先ディレクトリを指定してください。たとえば、c:¥Cloudscape_10にCloudscapeをインストールした場合、環境変数CLOUDSCAPE_INSTALLに、「c:¥Cloudscape_10」を設定します。例を示します。
set CLOUDSCAPE_INSTALL=c:¥Cloudscape_10

□ クラスパスの設定
JVM(コンパイラ、またはインタプリタ)は、実行するアプリケーションが必要な、すべてのクラスファイルへのパス(オペレーティングシステムの、場所に関する命令)を知らなければなりません。クラスパスは、プログラムを実行する際にJVMや、他のJavaアプリケーションが必要とするクラスライブラリのリストです。

クラスパスには2種類の設定方法があります。1つ目の設定方法は定常的に、または一時的にオペレーティングシステムのCLASSPATH環境変数を設定する方法です。環境変数を一時的に設定する場合、新しくコマンドウィンドウを開くたびごとに環境変数を設定しなければなりません。もう1つの設定方法は、実行時オプションとしてクラスパスを設定する方法です。JavaアプリケーションとJVMを開始する際に、クラスパスを設定します。

ほとんどの開発環境では、一時的にオペレーティングシステムのCLASSPATH環境変数を設定する方法がベストです。Cloudscapeではクラスパス設定のひな形となるスクリプトが提供されています。frameworks/embedded/binディレクトリ、またはframeworks/NetworkServer/binディレクトリを参照してください。新しくコマンドウィンドウを開くたびに、スクリプトを実行してください。

たとえば、クラスパスは次のように設定できます。
set CLASSPATH=%CLOUDSCAPE_INSTALL%¥lib¥cs.jar; %CLOUDSCAPE_INSTALL%¥lib¥cstools.jar;%CLASSPATH%

手動でsysinfoユーティリティを実行するには、コマンドウィンドウ、またはシェルで次のコマンドを実行してください。
java com.ihost.cs.tools.sysinfo

手動でijユーティリティを実行するには、コマンドウィンドウ、またはシェルで次のコマンドを実行してください。
java com.ihost.cs.tools.ij
ij> connect ’jdbc:cloudscape:testdb;create=true’;


ijユーティリティの実行を終了するには、次のコマンドを実行してください。
ij> exit;

ijユーティリティ、sysinfoユーティリティの実行の詳細については、「IBM Cloudscape Tools and Utilities Guide」(¥doc¥pdf¥tools.pdf)を参照してください。

■ 例題によるプログラミングの開始

  • 簡単な例 (7ページ)
  • Cloudscapeネットワークサーバーの例 (7ページ)

(7ページ)
□ 簡単な例
サンプルプログラム「Simple」では、次の基本的な処理を行います。

  • Cloudscapeの開始、Cloudscape JDBCドライバーのロード
  • 埋め込み環境(embedded environment)での実行、またはクライアントサーバー環境(Cloudscapeネットワークサーバー)での実行
  • 接続の確立
  • 自動コミットの解除
  • テーブルの作成
  • データの挿入、照会
  • 切断
  • Cloudscapeシステムのシャットダウン

サンプルプログラム「Simple」は/demo/programs/simpleディレクトリ下にあります。example.htmlファイルを参照してください。サンプルプログラム「Simple」の実行方法について説明されています。

サンプルプログラム「Simple」は埋め込みサーバー環境、Cloudscapeネットワークサーバー環境のどちらでも実行できるため、このプログラムを使ってCloudscapeの異なる環境を学習できます。

□ Cloudscapeネットワークサーバーの例
サンプルプログラムには、Cloudscapeネットワークサーバーのサンプルプログラムが2つあります。プログラムではCloudscapeネットワークサーバーを使用して、同じデータベースに対する埋め込み接続(embedded connection)の取得方法と、クライアント接続(client connection)取得方法を紹介します。
サンプルプログラム「Simple Network Server Sample」
このサンプルでは2つのプログラムを使用してJVM内で起動された通常のクライアントプログラムが、どのようにしてサーバープログラムで開始されたCloudscapeネットワークサーバーに接続するかを紹介します。クライアントプログラム「SimpleNetworkClientSample」と、サーバープログラム「SimpleNetworkServerSample」はそれぞれ個別のJVM内で動作します。Cloudscapeネットワークサーバーを使用する場合に、クライアント側、サーバー側でそれぞれ必要とされるCloudscapeのjarファイルについて紹介します。またSimpleNetworkClientSampleプログラムではDriverManager、またはDataSourceを使用したクライアント接続の取得方法についても紹介します。
サンプルプログラム「Network Server Demo」
プログラム「NsSample」は、Cloudscapeネットワークサーバーを開始し、Cloudscapeネットワークサーバーを使用した同じデータベースに対する埋め込み接続、クライアント接続の取得方法を紹介します。すべて一つのJVM内で実行されます。

サンプルプログラム「Simple Network Server Sample」、「Network Server Demo」は、demo/programs/nserverdemo/にあります。

■ Cloudscape文書の参照
Cloudscapeインストーラは、すべてのドキュメントをハードディスクにコピーします。ドキュメントについては「第4章 Cloudscapeドキュメント」を参照してください。


(9ページ)
第3章 JDBC経験者のためのクイックスタート

この章は、JDBCプログラミング経験者向けに書かれています。クラスパスの設定、Javaプログラムの実行、JDBCドライバーの使用などの基本的な事柄は理解しているものとします。

  • Cloudscapeの2つの環境
  • ライブラリとクラスパス
  • ドライバー
  • データベース接続URL (10ページ)

注意: 同様の項目に関する詳細については、「IBM Cloudscape Developer's Guide」、「IBM Cloudscape Tools and Utilities Guide」の第1章を参照してください。

■ Cloudscapeの2つの環境
システムを構成してCloudscapeを実行する前に、Cloudscapeの2つの環境の違いについて理解しておきましょう。環境によって、クラスパス、ドライバー名、データベース接続URLが異なるためです。Cloudscapeの環境の詳細については、「IBM Cloudscape Developer's Guide」を参照してください。

□ 埋め込み環境(Embedded environment)
自身のJVM内でCloudscapeのインスタンスを起動するアプリケーションを、埋め込み環境で実行するアプリケーションと呼びます。埋め込み環境では、同時に一つのアプリケーションだけがデータベースにアクセスできます。ネットワークアクセスは発生しません。埋め込みドライバー(embedded driber)をロードすると、Cloudscapeが開始されます。

□ クライアントサーバー環境
ネットワーク越しに複数のアプリケーションがCloudscapeに接続する場合、アプリケーションはクライアントサーバー環境で実行されています。Cloudscapeは、サーバーフレームワーク内に埋め込まれた形で実行され、複数のネットワーク接続を許可します(フレームワーク自身はCloudscapeのインスタンスを開始し、埋め込み環境で実行します。一方、クライアントアプリケーションは埋め込み環境にはありません。サーバー上でCloudscapeを実行する方法の詳細については、「IBM Cloudscape Server and Administration Guide」を参照してください。

また任意のJavaサーバーフレームワーク内にCloudscapeを埋め込むことが可能です。

■ ライブラリとクラスパス
詳細については15ページの「Cloudscapeライブラリとスクリプト: 完全リファレンス」を参照してください。

■ ドライバー

  • com.ihost.cs.jdbc.CloudscapeDriver
    埋め込み環境用。Cloudscapeはアプリケーションと同じJVM内で実行されます。
  • com.ibm.db2.jcc.DB2Driver
    Cloudscapeネットワークサーバー環境用。

(10ページ)
■ データベース接続URL

上の「ドライバー」で紹介したCloudscpae提供ドライバーを使用して、既存のデータベースに接続する、データベース接続URLの構文は次の通りです。

  • jdbc:cloudscape:databaseName;URLAttributes

ここで斜体の部分は次の項目で置き換えます。

  • databaseName
    接続先のデータベース名
  • URLAttributes
    1つ以上の、データベース接続URLがサポートする属性。たとえば「locale=ll_CC」や「create=true」など。詳細については「IBM Cloudscape Developer's Guide」を参照してください。



(11ページ)
第4章 Cloudscapeのドキュメント

■ マニュアル

  • 「IBM Cloudscape Developer's Guide」
    Cloudscape全般の機能と特長について解説。Cloudscape JDBC仕様、SQL仕様、Cloudscapeアプリケーションの配布、セキュリティ、その他の高度な機能など。
  • 「IBM Cloudscape Reference Manual」
    SQL言語、CloudscapeによるSQLのJava拡張に関するリファレンス。その他にCloudscape JDBC実装、JTA実装、キーワード、システムテーブル、プロパティ、SQLExceptionに関する参照情報。
  • 「Tuning IBM Cloudscape」
    プロパティを使用したCloudscapeの構成とチューニングについての説明と、プロパティの参照情報。その他にパフォーマンスヒント、パフォーマンスに関する詳細な議論、Cloudscpaeオプティマイザに関する情報
  • 「IBM Cloudscape Tools and Utilities Guide」
    Cloudscapeツールの操作に関するガイド。ij、importやexportなどの高度なユーティリティ、データベースクラスローダー。
  • 「IBM Cloudscape Server and Administration Guide」
    第1部ではサーバーの構成、クライアントアプリケーションのプログラミング方法、データベース管理について解説。さらにまれに必要とされる管理操作、たとえばデータベースのバックアップなど。管理操作はサーバーフレームワークに依存しませんが、マルチユーザーや大規模システムで独特です。
    第2部では管理のおける問題について解説。バックアップやデッドロックのデバッグなど。
  • 「Cloudscape API javadoc」
    すべてのpublicなCloudscapeクラスについて自動出生成したもの(JDBC APIに関するjavadocはありません。JDBC APIは、J2SEの一部です)。APIのクラスに関する詳細については「IBM Cloudscape Reference Manual」を参照してください。



(13ページ)
第5章 ドキュメント表記

  • 「用語集」Cloudscapeで使用される専門用語について説明します。
  • 「構文」構文の表記方法について説明します。
  • 「使用フォント」本文書でのフォントの使い分けについて説明します。


■ 用語集
Cloudscpapeのマニュアルでは、専門の特殊な言葉をいくつか使用します。理解を助けるため、言葉の定義を次に示します。

環境(environment)
アプリケーションのCloudscapeとの通信方法。「フレームワーク」として参照される場合もあります。環境には「埋め込み環境」と「クライアントサーバー環境」の2種類の環境があります。

埋め込み環境(embedded environment)
自身のJVM内でCloudscapeのインスタンスを起動するアプリケーションを、埋め込み環境で実行するアプリケーションと呼びます。埋め込み環境では、同時に一つのアプリケーションだけがデータベースにアクセスできます。ネットワークアクセスは発生しません。

クライアントサーバー環境(client/server environment)
ネットワーク越しに複数のアプリケーションがCloudscapeに接続する場合、アプリケーションはクライアントサーバー環境で実行されています。Cloudscapeは、サーバー、または接続フレームワーク内に埋め込まれた形で実行され、複数のネットワーク接続を許可します(フレームワーク自身はCloudscapeのインスタンスを開始し、厳密に言えば、埋め込み環境で実行します。一方、クライアントアプリケーションは埋め込み環境にはありません)。

■ 構文
SQL構文は一部変更されたBNF表記で表記されます。BNFのメタシンボルは次の通りです。

シンボル 意味
| 「または」の意。項目のうち一つを選択する。
[ ] オプション項目を囲む。
* 0回以上繰り返し可能な項目を示す。SQL文によっては特殊な意味を持つものもあり。
{ } 項目のグループ化。グループ化された項目は他のシンボル、たとえば、[ ]、|、*で利用される。
( ) . , 構文の一部となる、その他の区切り

SQL構文の例を次に示します。
CREATE [ UNIQUE ] INDEX IndexName
    ON TableName ( SimpleColumnName [ , SimpleColumnName ] * )

Javaプログラムやユーティリティ、サンプルプログラムを実行するコマンドライン構文は常に、「java」から始まります。
java com.ihost.cs.tools.ij

(14ページ)
また、本文書ではIBM Software Development Kitのスタイルを使用して、JVM引数やプロパティを設定します。別のJVMを使用する場合には、JVM引数やプロパティの設定方法が異なる可能性があります。

■ 使用フォント
本文書ではフォントを使い分けて、SQL言語、オペレーティングシステムコマンド、Javaプログラミング言語の特定の要素を強調して表示しています。

フォント 使用場所 例
斜体 新しい項目 キーによって定義
ファイル名、ディレクトリ名 C:¥cloudscape
辞書オブジェクト Employeesテーブル
構文において置き換える箇所 CREATE TABLE テーブル名
太字 SQL例 SELECT city.getName() FROM Cities
Javaアプリケーション例 Connection conn = DriverManager.getConnection ("jdbc:cloudscape:Sample")
コマンドプロンプトでの入力 java com.ihost.cs.tools.ij
例の中のコメント --This line ignored
すべて大文字 SQLキーワード (コマンド) CREATE TABLEステートメントを使用します。



付録 Cloudscapeライブラリとスクリプト: 完全リファレンス

  • Cloudscapeで提供されるライブラリ
  • Cloudscapeで提供されないライブラリ
  • Cloudscspeで提供されるスクリプト

■ Cloudscapeで提供されるライブラリ
エンジンライブラリ : 埋め込み環境では常に必要なライブラリ。クライアントサーバー環境では、サーバー側だけで必要。

cs.jar 埋め込みデータベース用ライブラリ

ツールライブラリ : 埋め込み環境では、ツールを使用するためクラスパスにライブラリへのパスが必要。クライアントサーバー環境では、クライアント側だけで必要。

cstools.jar すべてのCloudscapeツールの実行に必要(ij、cslook、import、exportなど)。

Cloudscapeネットワークサーバーライブラリ

csnet.jar Cloudscapeネットワークサーバーの開始に必要

db2jcc.jar DB2 JDBC Universal Driverの使用で必要。アプリケーションを実行するにはクライアント側のクラスパスに、db2jcc.jarへのパスを追加する。

db2jcc_license_c.jar DB2 JDBC Universal Driverの使用で必要。アプリケーションを実行するにはクライアント側のクラスパスに、db2jcc.jarへのパスを追加する。


■ Cloudscapeで提供されないライブラリ

JDK 1.3環境でCloudscapeを使用する場合、追加ライブラリのインストールやクラスパスの設定が必要な、特殊機能があります(JDK 1.4には必要なライブラリはすべて含まれます)。

- LDAP、またはNIS+ユーザー認証 (「IBM Cloudscape Developer's Guide」を参照)

- JTA (「IBM Cloudscape Reference Manual」を参照)

- JDBC 2.0 Extensions (「IBM Cloudscape Reference Manual」を参照)

■ Cloudscspeで提供されるスクリプト

Cloudscapeのスクリプトは/binディレクトリの下にあります。各スクリプトには2種類あり、一つは拡張子「.bat」を持ち、もう一つは拡張子「.ksh」を持ちます。Cloudscapeの全スクリプトを次に挙げます。

- frameworks/embedded/bin/ij

ijの開始

- frameworks/embedded/bin/setEmbeddedCP

(16ページ)

Cloudscapeの埋め込み環境用全ライブラリをクラスパスに設定

- frameworks/embedded/bin/sysinfo

sysinfoの実行

- frameworks/embedded/bin/cslook

cslookの実行

- frameworks/NetworkServer/bin/cslook

Cloudscapeネットワークサーバーのクライアントにおけるcslookの実行

- frameworks/NetworkServer/bin/ij

Cloudscapeネットワークサーバーのクライアントにおけるijの実行

frameworks/NetworkServer/bin/NetworkServerControl

NetworkServerControlの実行

- frameworks/NetworkServer/bin/setNetworkClientCP

Cloudscapeネットワークサーバーに接続する場合に必要なライブラリをクラスパスに設定

- frameworks/NetworkServer/bin/setNetworkServerCP

Cloudscapeネットワークサーバーに必要なライブラリをクラスパスに設定

frameworks/NetworkServer/bin/startNetworkServer

ローカルコンピュータ上でCloudscapeネットワークサーバーの開始

frameworks/NetworkServer/bin/stopNetworkServer

ローカルコンピュータ上でCloudscapeネットワークサーバーの停止

frameworks/NetworkServer/bin/sysinfo

実行中のCloudscapeネットワークサーバーからシステム情報を取得


(17ページ)
注意

[訳注 : 訳出しません]
(18ページ)
[訳注 : 訳出しません]
(19ページ)
[訳注 : 訳出しません]
■ 商標
[訳注 : 訳出しません]


(21ページ)
索引

■ C
クラスパス 15
クラスパスの設定 6
Cloudscapeエンジンライブラリ 15
Cloudscape基本ライブラリ - ij、sysinfoなどの基本ツール用 15
CLOUDSCAPE_INSTALL環境変数 6
cs.jar 15
cstools.jar 15

■ D
データベース接続URL - サポートされたプロトコルで 10

■ E
サンプルプログラム - 簡単な例 7

■ L
ライブラリ 15
ライブラリ - Cloudscape拡張で必要 15

■ P
PATHの設定 4
プロトコル 10

■ R
リリースノート 4

■ S
サンプルプログラムのライブラリ 15
サンプルデータベースのライブラリ 15

(22ページ)
(裏表紙)
IBM
Program Number: 5724-J28
Printed in USA

GC18-9246-00

| Cloudscape日本語訳 | 03:44 | comments(0) | trackbacks(0)
Derby公開
「Derby」はIBMが「Cloudscape」として販売していたデータベース製品のオープンソース版です。
Aapche Software Foundationで、Derbyに関するWebページが公開されました。URLはこちらです。http://incubator.apache.org/derby
| Derby | 05:34 | comments(0) | trackbacks(0)
簡単JDBCアプリケーション (demo/programs/simple/example.html日本語訳)
簡単JDBCアプリケーション
(C:¥cloudscape¥demo¥programs¥simple¥example.htmlを日本語訳してみたものです)



概要
何が含まれているか?
埋め込み環境(Embedded Environment)での実行方法


概要

このサンプルプログラムは、最小のJDBCアプリケーションです。JDBCはIBM Cloudscapeを利用する際の基本APIです。プログラムは次の処理を行います。
- Cloudscapeエンジンの開始 (必要な場合)
- データベースの作成と接続
- テーブルの作成
- データの挿入
- データの更新
- データの選択
- テーブルの削除
- データベースからの切断
- Cloudscapeの停止 (必要な場合)

アプリケーションは埋め込み環境(embedded environment)で動作します。埋め込み環境はもっとも単純なCloudscape環境です。アプリケーションは現在稼動中のJVM内でCloudscapeのインスタンスを開始し、アプリケーションが終了する前にインスタンスを停止します。ネットワークへのアクセスはありません。埋め込み環境では、同時にただ一つのアプリケーションだけがCloudscapeデータベースにアクセスできます。


何が含まれているか?

サンプルプログラムを実行する前に、/demo/programs/simpleディレクトリの下に、次のファイルとディレクトリがあることを確認してください。

- example.html
このファイル

- SimpleApp.java
プログラムのソースコード。Cloudscapeの開始、データベースの作成、データの挿入と更新、Cloudscapeの停止を行います。このファイルを使って、異なる環境でのアプリケーションの動き方を確認できます。

- cloudscape.properties
Cloudscapeシステム用のプロパティファイル

- SimpleApp.class
コンパイルされたクラスファイル

サンプルプログラムを実行すると、次のファイルとディレクトリが作成されます

- cloudscapeDB (ディレクトリ)
データベース「cloudscapeDB」を構成するディレクトリ。このディレクトリ内のファイルは変更できません。変更するとデータベースが壊れる場合があります。ディレクトリは、データベース接続URLの属性でcreate=trueを指定されたアプリケーションがCloudscapeに接続した際に作成されます。データベース名、このサンプルでは「cloudscapeDB」も、データベース接続URLで指定できます。

cloudscapeDB¥log (ディレクトリ)
データベース「cloudscapeDB」のデータベースログを保持するディレクトリ

cloudscapeDB¥seg0 (ディレクトリ)
データベース「cloudscapeDB」のデータを保持するディレクトリ

cloudscapeDB¥service.properties
データベース「cloudscapeDB」のブート時構成パラメータを保持する内部ファイル。変更しないで下さい。

cloudscape.LOG
Cloudscapeの進行状況、エラーメッセージが書き込まれるログファイル


埋め込み環境(Embedded Environment)での実行方法

1. コマンドウィンドウを開き、ディレクトリ/demo/programs/simpleに移動します。

2. システムレベルの環境変数として、まだCLOUDSCAPE_INSTALL環境変数を設定していない場合、手順1で開いたコマンドウィンドウ内で、CLOUDSCAPE_INSTALL環境変数に、Cloudscapeをインストールしたディレクトリを指定します。

3. コマンドウィンドウで、次のライブラリとディレクトリに対してCLASSPATHを設定します。

- cs.jar : メインのCloudscape用ライブラリ
%CLOUDSCAPE_INSTALL%/lib/cs.jar

- カレントディレクトリ
. (ドット)

■ 埋め込み環境における、クラスパス設定に関する注意

Cloudscapeでは、クラスパス設定の参考用スクリプトが%CLOUDSCAPE_INSTALL%/frameworks/embedded/binディレクトリで提供されます。スクリプト名は「setEmbeddedCP」で、2つのタイプがあります。1つはWindows環境用で拡張子は.bat、もう1つはUNIX環境用で拡張子は.kshです。Windowsユーザー、UNIXユーザーは、それぞれのファイル内に記述されたコマンドをコピーして、クラスパス設定のひな形として使用できます。

4. Cloudscapeのユーティリティを実行して、埋め込み環境におけるクラスパスをテストします。ユーティリティには引数として、埋め込み環境を表す「embedded」と、SimpleAppクラスに到達できることを確認する「SimpleApp.class」を渡します。

ユーティリティの構文例を示します。

java com.ihost.cs.tools.sysinfo -cp arguments

ここでは次のように引数を渡して、実行します。すべて1行で入力してください。

java com.ihost.cs.tools.sysinfo -cp embedded SimpleApp.class

環境が正しく設定されていれば、ユーティリティは成功を表示します。例を示します。

FOUND IN CLASS PATH:
Cloudscape primary library (cs.jar)
Valid Cloudscape license (Cloudscape primary library, or for evaluation copies of the software only, license.jar)
user-specified class (SimpleApp)
SUCCESS: All Cloudscape-Related classes for embedded environment found in class path.

クラスパス環境変数に何か足らない場合、ユーティリティはどのファイルが足らないかを表示します。たとえば、クラスパスにSimpleAppクラスへのディレクトリを追加し忘れた場合、ユーティリティは次のように表示します。

Testing for presence of Cloudscape-related libraries for embedded environment.
FOUND IN CLASS PATH:
Cloudscape primary library (cs.jar)
Valid Cloudscape license (Cloudscape primary library, or for evaluation copies of the software only, license.jar)
NOT FOUND IN CLASS PATH:
user-specified class (SimpleApp)
(SimpleApp not found.)

5. 正しく環境を設定したら、同じディレクトリ(/demo/programs/simple)からアプリケーションを実行します。

java SimpleApp

正常に実行されると、次の出力が表示されます。

SimpleApp starting in embedded mode.
Loaded the appropriate driver.
Connected to and created database cloudscapeDB
Created table cloudscapeDB
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table cloudscapeDB
Closed result set and statement
Committed transaction and closed connection
Database shut down normally
SimpleApp finished


著作権表示

IBM Cloudscape Version 10 Beta
Copyright(c) INTERNATIONAL BUSINESS MACHINES CORPORATION, 1999, 2004 ALL RIGHTS RESERVED.
| Cloudscape日本語訳 | 02:08 | comments(0) | trackbacks(0)
IBM Cloudscape Version 10.0 Beta, Javaのインストール (install_java.htmlの日本語訳)
IBM Cloudscape Version 10.0 Beta, Javaのインストール
(install_java.htmlを日本語訳してみたものです)

[訳注] : インストーラには次の3種類がありますが、この文書はJava版インストーラのものです。
1. Windows版 : IBM JRE + Cloudscape (60MB)
2. Linux版 : IBM JRE + Cluouscape (70MB)
3. Java版 : Cloudscape (15MB) * 別途 JVM 1.3以上が必要


- はじめに
- アップグレードに関する重要なお知らせ
- インストール手順
- リリースノート
- ヘルプ


はじめに

この文書ではIBM Cloudscape Version 10.0 Betaのインストール方法について説明します。インストールにはJavaベースのインストーラを使用します。環境はUNIX、Linux、Windowsです。


アップグレードに関する重要なお知らせ

以前のバージョンのCloudscapeから、Cloudscape Version 10.0へアップグレードすることはできません。Cloudscape Version 10.0では、サポートするデータ型、データ型の制限、SQL構文、パッケージ名等が変更されています。この変更は既存のアプリケーションに影響を与える場合があります。

Cloudscape Version 10.0以前のバージョンのCloudscapeで稼動する、既存のアプリケーションは、書き直しや、場合によっては再デザインが必要になるかもしれません。

Cloudscape Version 10.0以前のバージョンがインストールされているコンピュータに、上書きでCloudscape Version 10.0をインストールしないで下さい。以前のバージョンのCloudscapeをアンインストールするには、アンインストールプログラムを実行するか、または手動でファイルを削除してください。アンインストールプログラムは、既存のデータベースは削除しません。また本ベータ版で作成されたデータベースを正式版のCloudscape Version10.0版へ移行するには、インポートユーティリティ、エクスポートユーティリティを使用して、データベースを再作成する必要があります。

既存のアプリケーションに影響を与えるCloudscapeの仕様変更については、サポートWebサイトhttp://www.ibm.com/software/data/cloudscape/support/index.htmlを参照してください。
[訳注]最新の情報はこちらへ。http://www.ibm.com/developerworks/db2/zones/cloudscape/、またはリリースノート移行ガイドを参照してください。


インストール手順

■ 前提条件
- コンピュータにはJVM 1.3以上のインストールが必要です。Windows上にインストールするのであれば、IBM Cloudscape Version 10.0 Betaには、Windows用のインストーラがあります。このWindows用インストーラであれば、事前にJVMをインストールする必要はありません。
- すべてインストールするには、ハードディスクに約30.8MBの空き容量が必要です。
- 画像の表示には、解像度640x480ドット/256色以上が必要です。

■ 重要なお知らせ : Red Hat Linux Enterprise 3 (RHEL) 3 上で IBM 1.4.2 Runtimeを使用している方へ
- RHEL 3上でIBM 1.4.2 JRE、またはSDKを使用している場合、実行環境は共用ライブラリ/usr/lib/libstdc++-libc6.2-2.so.3が必須です。
- ライブラリは、デフォルトのRed Hat Enterprise Linux (RHEL) 3.0ではインストールされません。
- ライブラリを含むrpmは、compat-libstdc++-7.3-2.96.122.i386.rpmです。
- ライブラリをインストールするには、シェルで以下を実行してください。

rpm -ivh compat-libstdc++-7.3-2.96.122.i386.rpm

- RHEL 3のインストール時に、ライブラリも併せてインストールするには、
- Package Defaults画面で、オプション「Customize the Set of packages to be installed」 選択し、
- 「Package Group Selection」画面の「Development」オプションの下で、「Legacy Software Development」を選択します。

■ インストーラの開始

1. Javaをインストールしたディレクトリの下のbinディレクトリにパスを通します。

UNIX、またはLinux(Kornシェル、またはBashシェル)

$ export PATH=/usr/j2se/bin:${PATH}

Windows

> SET PATH=c:¥jdk1.3.1¥bin;%PATH%


2. カレントディレクトリに10.0.1-beta-IBM-Cloudscape.jarをコピーします。

UNIX、またはLinux(Kornシェル、またはBashシェル)

$ cp /cdrom/Java/10.0.1-beta-IBM-Cloudscape.jar .

Windows

> copy G:¥Java¥10.0.1-beta-IBM-Cloudscape.jar .


3. java -jarコマンド(またはJVMごとの同等のコマンド)を使用してインスーラを実行します。

UNIX、またはLinux(Kornシェル、またはBashシェル)

$ java -jar 10.0.1-beta-IBM-Cloudscape.jar

Windows

> java -jar 10.0.1-beta-IBM-Cloudscape.jar


4. 特にUNIX、またはLinuxの場合、インストール先のディレクトリを指定する場合には書き込み権限のあるディレクトリをパスに指定してください。

インストーラは、標準的なインストール先ディレクトリをデフォルトとして使用します。このデフォルトは変更できます。

■ 警告: インストール先のディレクトに空白文字が含まれる場合、付属のバッチファイルやスクリプトファイルを実行すると、エラーが発生するかもしれません。

UNIXなどでは、デフォルトのインストール先ディレクトリに書き込み権限がない場合があります。この場合そのままインストールを続行すると、インストール作業正常に完了しません。書き込み権限があるディレクトリを指定してください。

インストールが始まると、インストーラはIBM Cloudscape Version 10.0 Betaを解凍し、対話型JDBCスクリプトツール「ij」や他のユーティリティをインストールします。Cloudscapeドキュメントセット、及びリリースノートも同時にインストールされます。


■ 問題解決

Cloudscapeのインストール中に、警告が表示される場合があります。警告は、オペレーティングシステム用の機能がインストーラに含まれていない場合に発生します。インストール先ディレクトリとして指定したディレクトリのファイルパーミッションが正しいことを確認してください。インストール中に発生したエラーについては、詳細がログファイルに記述されます。ログファイルは、インストーラを起動したディレクトリに作成されます。
次の警告については無視してください。これはJVMで提供されるファイルをデフォルトとして使用できるためです。

- File attributes could not be set because native support for that operation is not available.(このオペレーティングシステム用の機能がサポートされないため、ファイルの属性を設定できません)

- File times could not be set because native support for that operation is not available. (このオペレーティングシステム用の機能がサポートされないため、ファイルのタイムスタンプを設定できません)


リリースノート

Cloudscapeをインストールした後は、まずreleasenotes.htmlを参照してください。重要な情報について記述されています。また/docディレクトリの下の「Getting Started with Cloudscape」も参照してください。これはIBM Cloudscape Version 10.0 Betaの使い方を知るで特に重要なマニュアルです。


ヘルプ

Cloudscapeの技術的な情報については、こちらへ。http://www.ibm.com/software/data/cloudscape/support/
[訳注]最新の情報はこちらへ。http://www.ibm.com/developerworks/db2/zones/cloudscape/
| Cloudscape日本語訳 | 06:08 | comments(1) | trackbacks(0)
Cloudscapeのインストール
Unofficial DB2 BLOGの2004/08/06の記事「Cloudscapeがオープンソースに」にも紹介がある通り「Cloudscape」はIBMがオープンソース化したRDBです。将来的にはApacheから「Derby」の名の下、ソースコードも含めて提供されるようですが、現在すでにバイナリが入手可能ですので、インストールしてみました。


参考 :
Cloudscapeのインストール(install_java.htmlの日本語訳)
簡単JDBCアプリケーション(demo/programs/simple/example.htmlの日本語訳)


■ インストーラの種類

インストーラには3種類あります。
1. Windows版 : IBM JRE + Cloudscape (60MB)
2. Linux版 : IBM JRE + Cluouscape (70MB)
3. Java版 : Cloudscape (15MB) * 別途 JVM 1.3以上が必要

手持ちのWindows環境にはすでにSUN J2SE 1.4.1がインストールされていたので、Java版をインストールしてみました。

■ ダウンロード手順
IBMのdeveloperWorksからダウンロードします。

1. Cloudscape technical resource center
http://www-106.ibm.com/developerworks/db2/zones/cloudscape/)

の右上「Download IBM Cloudscape today」をクリック。

2. スクロールして「Download IBM Cloudscape」の所に、Java版/Linux版/Windows版のそれぞれのインストーラがある。Java版を選択。

3. ダウンロード用のユーザーIDとパスワードを入力して「Sign in」をクリック。ユーザーIDがない場合は「I have not registered before」をクリックして、必要事項を記入の上、入手。

4. 必要事項に答え「Accept License」をクリック。で、ようやくDownloadsの画面へ。

5. ここでは10.0.1-beta-IBM-Cloudscape.zipをダウンロード。なおinstall_java.htmlはzipファイルに含まれているため、別途、ダウンロードする必要はありません。

■ インストール手順
インストールにはjava -jarコマンドを利用します。

1. 10.0.1-beta-IBM-Cloudscape.zipを展開します。

2. java -jar 10.0.1-beta-IBM-Cloudscape.jarを実行します。

画面の指示に従っていくとインストールは完了します。

■ 確認
仕様なのか、Java版のインストーラだからなのか、バグなのか。インストールが完了しても、スタートメニューやデスクトップには一切、アイコンが追加されません。
で、マニュアルに従いコマンドラインツールで動作検証とします。参考にしたのは¥doc¥pdf¥getstart.pdfです。

1. 環境変数CLOUDSCAPE_INSTALL、classpathを設定します。
set CLOUDSCAPE=c:¥cloudscape
set set CLASSPATH=%CLOUDSCAPE_INSTALL%¥lib¥cs.jar;%CLOUDSCAPE_INSTALL%¥lib¥cstools.jar;%CLASSPATH%

2. システム情報を表示する「sysinfo」コマンドを実行します。

C:¥>java com.ihost.cs.tools.sysinfo
------------------ Java Information ------------------
Java Version: 1.4.1_03
Java Vendor: Sun Microsystems Inc.
Java home: C:¥j2sdk1.4.1_03¥jre
Java classpath: c:¥Cloudscape¥lib¥cs.jar; c:¥Cloudscape¥lib¥cstools.jar;...
OS name: Windows XP
OS architecture: x86
OS version: 5.1
Java user name: hoge
Java user home: C:¥Documents and Settings¥hoge
Java user dir: C:¥
--------- Cloudscape Information --------
[C:¥cloudscape¥lib¥cs.jar] 10.0.1.0 beta - (29729)
[C:¥SQLLIB¥java¥db2jcc.jar] 1.5 - (54)
[C:¥SQLLIB¥java¥db2jcc_license_cisuz.jar] 1.5 - (54)
[C:¥SQLLIB¥java¥db2jcc_license_cu.jar] 1.5 - (54)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------

3. 続いてCloudscapeのデータベースへの接続確認です。

C:¥>java com.ihost.cs.tools.ij
ij version 10.0 (c) 1997, 2004 IBM Corp.
ij> connect 'jdbc:cloudscape:testdb;create=true';
ij> exit;
C:¥>

きちんと動作しているようです。なおこれらのコマンドは¥cloudscape¥frameworks¥embedded¥binでもバッチ、スクリプトとして提供されています。

■ 簡単なサンプル
C:¥cloudscape¥demo¥programs¥simple¥example.htmlを元にサンプルプログラムを実行します。

1. C:¥cloudscape¥demo¥programs¥simpleに移動します。

2. 環境変数を設定します。カレントディレクトリにもCLASSPATHを設定していることに注意してください。

set CLOUDSCAPE=c:¥cloudscape
set set CLASSPATH=%CLOUDSCAPE_INSTALL%¥lib¥cs.jar;.;%CLOUDSCAPE_INSTALL%¥lib¥cstools.jar;%CLASSPATH%

3. 付属のツールを使って設定を確認します。ここでembeddedとは、アプリケーションと同一のJVM内で動作するモードを言うようで、ちなみに通常のRDBMS的なクライアントサーバーモデルはNetwork Serverと読んでいるようです。

C:¥cloudscape¥demo¥programs¥simple>java com.ihost.cs.tools.sysinfo -cp embedded SimpleApp.class

正常に設定されていると、次のようなメッセージが表示されます。

FOUND IN CLASS PATH:
Cloudscape embedded engine library (cs.jar)
user-specified class (SimpleApp)
SUCCESS: All Cloudscape related classes found in class path.

4. 実行します。

C:¥cloudscape¥demo¥programs¥simple>java SimpleApp
SimpleApp starting in embedded mode.
Loaded the appropriate driver.
Connected to and created database cloudscapeDB
Created table cloudscapeDB
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table cloudscapeDB
Closed result set and statement
Committed transaction and closed connection
Database shut down normally
SimpleApp finished

お疲れ様。
| Cloudscape | 05:25 | comments(0) | trackbacks(1)
CALENDAR
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
SELECTED ENTRIES
CATEGORIES
ARCHIVES
RECENT TRACKBACK
PROFILE