この節では、Application Server 9.1 にバンドルされている Java DB データベースの実装を使用する手順について説明します。Java DB は、Apache Derby データベースを基盤としています。
Sun Java System Application Server 9.1 には、Java DB ネットワークサーバーの起動と停止を行うための 2 つの新しい asadmin コマンドが導入されています。
Java DB Network Server のインスタンスを開始するには、asadmin start-database コマンドを使用します。
start-database [--dbhost 0.0.0.0] [--dbport 1527] [--dbhome path] |
ホストのデフォルト値は 0.0.0.0 です。この値によって、Java DB は IP/ホスト名のインタフェースと同様に localhost で待機できます。dbhome プロパティーの値は、Java DB データベースの格納場所です。デフォルトの path は、appserver_install_dir/javadb です。
Java DB Network Server の実行中のインスタンスを停止するには、次のように asadmin stop-database コマンドを使用します。
stop-database [--dbhost 0.0.0.0] [--dbport 1527] |
このスクリプトは Application Server 9.1 では推奨されていません。
Application Server 9.1 とともに出荷される Java DB の構成には、Java DB の使用に役立つ便利なスクリプトも含まれます。<appserver_install_dir> /javadb/frameworks/NetworkServer/bin ディレクトリには、次の使用可能なスクリプトがあります。
startNetworkServer.ksh/bat : ネットワークサーバーを開始するスクリプト
stopNetworkServer.ksh/bat : ネットワークサーバーを停止するスクリプト
ij.ksh/bat : 対話式の JDBC スクリプト記述ツール
dblook.ksh/bat : データベースの DDL の全部または一部を表示するスクリプト
sysinfo.ksh/bat : Java DB 環境に関するバージョン情報を表示するスクリプト
NetworkServerControl.ksh/bat : NetworkServerControl API でコマンドを実行するためのスクリプト
<appserver_install_dir>/javadb ディレクトリをポイントするように、DERBY_INSTALL 環境変数を設定します。
CLASSPATH 環境変数の設定を解除します。
次のプロパティーを設定することもできます。
これらのユーティリティーの詳細については、Derby のツール および Admin に関するガイドを参照してください。
この例は、コマンダの Pointbase テーブルの DDL をキャプチャーし、NetBeans 5.0 を使用して Java DB に同じテーブルを作成する方法を示しています。これと同じ事を行うには、コマンダツールと 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 プロシージャーを Java DB で動作するように変換するには、CREATE PROCEDURE 文と同様に Java コードも変更する必要があります。Java DB の Java プロシージャーの詳細については、Derby Reference manual を参照してください。Boolean データ型は、次期リリースの Java DB でサポートされる予定です。