この節では、Application Server 8.2 にバンドルされている Derby データベースの実装を使用する手順について説明します。
Sun Java System Application Server 8.2 には、Derby Network Server の開始と停止を行うための 2 つの新しい asadmin コマンドが導入されています。
start-database コマンドを使用すると、Derby Network Server のインスタンスを起動できます。
start-database [--dbhost 0.0.0.0] [--dbport 1527] [--dbhome path/derby] |
ホストのデフォルト値は 0.0.0.0 です。この値によって、Derby は IP/ホスト名のインタフェースと同様に localhost で待機できます。dbhome プロパティーの値は、Derby データベースの格納場所を示しています。デフォルトの path は <appserver_install_dir>/derby です。
asadmin stop-database コマンドを使用すると、実行中の Derby ネットワークサーバーのインスタンスをシャットダウンできます。
stop-database [--dbhost 0.0.0.0] [--dbport 1527] |
Application Server 8.2 とともに出荷される Derby の構成には、Derby の使用に役立つ便利なスクリプトも含まれます。<appserver_install_dir> /derby/frameworks/NetworkServer/bin ディレクトリには、次の使用可能なスクリプトがあります。
startNetworkServer.ksh/bat : ネットワークサーバーを開始するスクリプト
stopNetworkServer.ksh/bat : ネットワークサーバーを停止するスクリプト
ij.ksh/bat : 対話式の JDBC スクリプト記述ツール
dblook.ksh/bat : データベースの DDL の全部または一部を表示するスクリプト
sysinfo.ksh/bat : Derby 環境に関するバージョン情報を表示するスクリプト
NetworkServerControl.ksh/bat : NetworkServerControl API でコマンドを実行するためのスクリプト
<appserver_install_dir>/derby ディレクトリをポイントするように、DERBY_INSTALL 環境変数を設定します。
CLASSPATH 環境変数の設定を解除します。
次のプロパティーを設定することもできます。
これらのユーティリティーの詳細については、Derby のツール および Admin に関するガイドを参照してください。
この例は、Pointbase のテーブルの DDL をキャプチャーし、Netbeans 5.0 を使用して Derby に同じテーブルを作成する方法を示しています。これと同じ事を行うには、コマンダツールと unload database コマンドを使用する方法もあります。
./startcommander.sh Do you wish to create a new Database. (Yes (Y) or No (N))? [default: N]: Enter product to connect with: (Embedded (E) or Server (S))? [default: E]: e Enter driver to use? [default: [com.pointbase.jdbc.jdbcUniversalDriver]: Enter database URL? [default: [jdbc:pointbase:embedded:sample]: Enter Username? [default: PBPUBLIC]: Enter Password? [default: PBPUBLIC]: PointBase Commander 5.2 ECF build 294 size restricted version EMBEDDED Interactive SQL command language. SunOS/5.9 (C) Copyright 2004 DataMirror Mobile Solutions, Inc. All rights reserved. Licensed to: Sun_customer_demo_use For commercial version contact PointBase at: pointbase.com PHONE: 1-877-238-8798 (US & CANADA) 1-408-961-1100 (International) WEBSITE: www.pointbase.com SQL>unload database sampledb.sql; SQL> unload database sampledb.sql; SQL> 13 Row(s) Unloaded. (PBPUBLIC.CUSTOMER_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.DISCOUNT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.MANUFACTURE_TBL) SQL> 11 Row(s) Unloaded. (PBPUBLIC.MICRO_MARKETS_TBL) SQL> 9 Row(s) Unloaded. (PBPUBLIC.OFFICE_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.OFFICE_TYPE_CODE_TBL) SQL> 15 Row(s) Unloaded. (PBPUBLIC.ORDER_TBL) SQL> 6 Row(s) Unloaded. (PBPUBLIC.PRODUCT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.PRODUCT_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_DATA_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_TBL) SQL> 52 Row(s) Unloaded. (PBPUBLIC.SALES_TAX_CODE_TBL) SQL> 12 Table(s) Unloaded. SQL> quit;
この例の unload database コマンドを実行した結果は、sampledb.sql ファイルに書き込まれます。sampledb.sql ファイルには、必要なテーブルとインデックスを作成するために必要となる DDL がすべて含まれています。また、データベースにデータを挿入しなおすための DML も含まれます。コマンダの RUN コマンドは、生成されたスクリプトを使用して別の Pointbase データベースにデータをインポートするために使用されます。生成されたファイル内の INSERT 文と関連するデータの例を次に示します。
INSERT INTO "ADVENTURE"."CATEGORY" ( "CATID", "LOCALE", "NAME", "DESCRIPTION", "IMAGEURI" ) VALUES( ?, ?, ?, ?, ? ); { 'ISLAND ','en_US','Island Adventures','Experience an island / paradise in a way fit for your needs.','Island_Adventures.gif' 'JUNGLE ','en_US','Jungle Adventures','Experience a jungle / paradise in a way fit for your needs.','Jungle_Adventures.gif' 'MOUNTAIN ','en_US','Mountain Adventures','Experience an / elevated paradise with a view.','Mountain_Adventures.gif' 'ORBITAL ','en_US','Orbital Adventures','Experience a vacuum / paradise with a beautiful view and where no one can hear you scream.', / 'Space_Adventures.gif' 'WESTERN ','en_US','Western Adventures','Enjoy the Wild West. / ','Western_Adventures.gif' 'SOUTH_POLE ','en_US','South Pole Adventures','Experience a / frozen paradise in a way fit for your needs.','SouthPole_Adventures.gif' };
コマンダの unload database コマンドによって生成されたファイルを、DDL だけで構成されるように簡単に編集できます。たとえば、insert 文を処理するプログラムを記述することは難しくありません。簡単なテストとして、Pointbase sample データベースに対して unload database コマンドを使用し、生成されたスクリプトを編集して次のように変更します。
すべての CREATE Table 文の末尾から Organization Heap という部分を削除します。
COMMIT コマンドを削除します。
ブール値 datatype を smallint に変更します。
すべての INSERT 文とそれに関連するデータを削除します。
次に、簡単な Ant スクリプトを使用し、sql ターゲットを使用して DDL を実行します。最後に、sun-appserv-samples データベースに対して同じ試行を繰り返します。このとき、生成された SQL ファイルに次の変更を追加する必要があります。
サンプルのデータベースに対して、ここで説明した変更をすべて加えます。
create user コマンドを削除します。
SET PATH コマンドを削除します。
Decimal の精度を 38 から 31 以下に変更します。
float の精度を 64 から 52 以下に変更します。
CREATE PROCEDURE コマンドの SPECIFIC キーワードは現在サポートされていません。
GRANT コマンドを削除します。
Pointbase の Java プロシージャーを Derby で動作するように変換するには、CREATE PROCEDURE 文と同様に Java コードも変更する必要があります。Derby の Java プロシージャーの詳細については、Derby Reference manual を参照してください。Boolean データ型は、次期リリースの Derby でサポートされる予定です。