初めてのApache Derby
Version 10.2
Derby Document build:
August 10, 2009, 1:11:20 PM (PDT)
Version 10.2 初めてのApache Derby
Contents
Copyright •
Derbyの紹介 •
配置可能な構成 •
システム要件 •
Derbyのライブラリマニュアル •
Derbyのインストールと利用 •
Derbyのインストール •
環境設定 •
Derbyのツールと、そのスクリプトについて •
sysinfoを使う •
ijを動かす •
classpathの設定 •
JDBCを使ったプログラムに慣れている人向けのクイックスタートガイド •
Derbyにて可能な構成 •
組み込み環境の構成 •
クライアント/サーバ環境の構成 •
ドライバの一覧 •
データベース接続URL •
文書の記法 •
用語 •
SQLの文法 •
体裁 •
Derbyのライブラリとスクリプトの全一覧 •
Derbyの提供するライブラリ •
Derbyの提供しないライブラリ •
Derbyのスクリプト •
Trademarks •
•
初めてのApache Derby
Apache Software Foundation初めてのApache DerbyApache Derby
Copyright
Copyright 2004, 2006 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Derbyの紹介
Derbyにようこそ! Derbyは、Java(TM)とSQLを基盤に置いて開発された、関係性データベース管理システム(RDBMS)です。
この節では、Derbyについて説明します。
配置可能な構成
Derbyは、いくつかの異なる構成で配置することができます。
以下の各構成で配置可能です。:

• |  | 一人で使うJavaアプリケーションへの組込 この構成では、Derby はアプリケーションと同じJava仮想マシン(JVM)で動作します。DBMSを管理する必要もありませんから、この構成では組み込まれたソフトウェアの存在をエンドユーザからほとんど見えなくする事ができるでしょう。
• |  | Webサーバやアプリケーションサーバ、共有された開発環境等の、複数人で使うアプリケーションへの組込
• |  | サーバ機能を提供するフレームワークへの組込 ネットワークサーバとネットワーククライアントドライバを使うこともできますし、それ以外のあなたが選んだフレームワークを使うこともできます。

システム要件
Derby はJavaにより全てが実装されたデータベースのエンジンです。 ですから、正しいJava仮想マシン(JVM)であれば、何を使っても動作させることが可能です。
Derbyのライブラリマニュアル
Derbyのライブラリマニュアルには、Derby のマニュアルとAPIのリファレンスが含まれています。
Derby Developer's Guide
DerbyのJDBC/SQL上の仕様や、Derbyをアプリケーションで使う方法、セキュリティやその他の、Derbyの全般的な機能や要点を説明します。
Derby Reference Manual
Derbyにて実装されたSQLの文法をこの文書で説明します。また、DerbyのJDBCやJTAの実装や、用語、システム表、プロパティやSQLExceptionsもこの文書で説明します。
Tuning Derby
Derbyの設定やチューニングについて、関連するプロパティを説明します。 また、プロパティのリファレンスを提供します。 さらにパフォーマンス向上のヒントや、詳細に立ち入った話題、さらにDerbyのオプティマイザに関する情報を提供します。
Derby Tools and Utilities Guide
ijやインポート/エクスポート、データベースのクラスローダなどのツールの使い方を説明します。
Derby Server and Administration Guide
サーバの設定方法や、クライアントのアプリケーションプログラムの書き方、データベースの管理方法をこの文書で説明します。
さらに、ある種のシステムではデータベースのバックアップや様々な管理を行う必要があります。これはサーバを実現するフレームワークとは関係なく、データベースが複数のユーザで使われる場合や、その規模が大きい場合です。
この文書の第二章では、バックアップやデッドロックの解消のようなデータベース管理の方法について説明します。
Derby API javadoc
公開されたDerbyのクラスから自動的に出力した文書です。 (J2SEの一部であるJDBC APIのjavadocは提供されません。) APIの提供するクラスの詳細についてはDerby Reference Manualを参照してください。
Derbyのインストールと利用
あなたがDerbyおよび JDBC を使ったプログラミングに不慣れであれば、この節の内容はこの製品の利用を始めるときの助けとなるでしょう。
あなたにJDBCを使ったプログラミングの経験があるのであれば、JDBCを使ったプログラムに慣れている人向けのクイックスタートガイドを見るほうが良いでしょう。
Derbyのインストール
Derbyをインストールするには、 最初にDerbyのzipあるいはtarによる書庫ファイルを、DerbyのWebサイトからダウンロードする必要があります。
Webブラウザでhttp://db.apache.org/derby/derby_downloads.htmlを開いてください。 このURLのページには、最新および以前に公式にリリースされたDerbyの配布物へのリンクが幾つかあります。これらの配布物には、ソースコードやバイナリが含まれています。 このページにはhttp://db.apache.org/derby/dev/derby_source.htmlへのリンクがあります。リンク先の文書を読むと、ソースコード管理ツールからDerbyの幹や枝にあるソースコードを取得するためには、Subversionをどのように使えばいいのかわかるでしょう。
配布物は以下のようになっています。

• |  | binという配布物には、スクリプト、デモプログラム、文書が含まれています。これらを省いてjarファイルのみを提供するlibという配布物が用意されています。
• |  | libという配布物には、配置用に最適化されたフットプリントが小さなjarファイルが含まれています。
• |  | lib-debugという配布物には、デバッグや発見した問題を報告するときに便利な、フットプリントの大きなjarファイルが含まれています。
• |  | srcという配布物には、bin, lib, and lib-debugの配布物が作られたソースコードが含まれています。

このガイドはあなたのダウンロードした配布物がbinであると仮定しています。
ダウンロードしたものを解凍してください。解凍してできたインストール物には、以下のサブディレクトリが含まれています。

• |  | demoというサブディレクトリには、デモプログラムがあります。
• |  | binというサブディレクトリには、各種ユーティリティ的なツールを実行したり環境設定を行うスクリプトがあります。
• |  | javadocというサブディレクトリには、apiを説明する文書があります。これはソースコード中のコメントから作られたものです。
• |  | docsというサブディレクトリには、Derbyの文書があります。
• |  | libというサブディレクトリには、Derbyのjarファイルがあります。
• |  | testというサブディレクトリには、Derbyが劣化なく動作するか確かめるための、試験プログラムがあります.
• |  | frameworksというサブディレクトリには、各種ユーティリティ的なツールを実行したり環境設定を行うスクリプトが置かれています。これは歴史的なもので、このリリースでは後方互換性のために提供されています。改善されたスクリプトがbin ディレクトリにあるので、今後のリリースのことを考えるとこのディレクトリにあるスクリプトはお勧めできません。

環境設定
配布されたDerbyのbinにあるスクリプトを正常に実行するためには、幾つかの環境変数の設定が必要です。 またスクリプトは、WindowsのコマンドプロンプトやUnixのシェルのような、コマンドラインの環境から実行する必要があります。
環境変数は次のように設定します。

1. |  | 環境変数のDERBY_HOMEを、Derbyの配布物(bin)が展開された場所に設定します。 たとえば、もしDerbyがWindowsのc:\Derby_10というディレクトリ、またはUnixの/opt/Derby_10というディレクトリにインストールされたなら、 次のコマンドで環境変数のDERBY_HOMEを設定します。
OS | コマンド
UNIX | export DERBY_HOME=/opt/Derby_10
Windows | set DERBY_HOME=c:\Derby_10
2. |  | 環境変数のJAVA_HOMEを設定します。JAVA_HOMEという環境変数は、スクリプトがJVMやJavaアプリケーションの場所を知るために使います。
OS | コマンド
UNIX | export JAVA_HOME=/usr/j2se
Windows | set JAVA_HOME=C:\Program Files\Java\j2se1.4.2_05
3. |  | DERBY_HOME/binディレクトリを環境変数のPATHに設定して、Derbyのスクリプトを、カレントディレクトリにかかわらず実行できるようにします。
OS | コマンド
UNIX | export PATH="$DERBY_HOME/bin:$PATH"
Windows | set PATH=%DERBY_HOME%\bin;%PATH%
環境変数のDERBY_HOMEが設定されていて、 その下にあるbinディレクトリが環境変数のPATHに含まれていれば、Derbyのツールを、短いコマンドで実行することが可能です。
4. |  | 環境変数のDERBY_HOMEとJAVA_HOMEが正しく設定されていて、DERBY_HOME/bin のディレクトリが環境変数のPATH environmentに追加されたことを検証します。 次のコマンドで設定を検証します。
    sysinfo
環境変数が正しく設定されていれば、sysinfoコマンドにより、あなたの環境のJVMおよびインストールしたDerbyのバージョンが表示されます。

binにあるスクリプトについてもっと知りたければ、Derbyのスクリプトを参照してください。
Derbyのツールと、そのスクリプトについて
Derbyには便利なツールや機能が幾つか用意されています。.
Derbyには、dblook、 ij、 それとsysinfoというツールが用意されています。これらのDerbyのツールはDerbyに用意されたスクリプトで起動します。
またDerbyには、ツールのijから呼び出し可能なシステムプロシージャとして提供されている機能もあります。これらのシステムプロシージャを使って、たとえば外部のファイルとの間でインポートやエキスポートを行うことができます。システムプロシージャの使い方は、Derby Tools and Utilities Guideと、Derby Reference Manualに書かれています。
それぞれのツールは、DERBY_HOME/binのディレクトリにあるスクリプトで起動します。ここにあるスクリプトはそのほかにも、classpathを設定するときに重宝します。
DERBY_HOME/binのディレクトリにあるスクリプトは、DBMSを組み込みモードで実行するように作られています。これらのツールをNetwork Serverで使う場合、次のコマンドを使ってください。

• |  | dblookは-dオプションとNetwork ServerへのURLを指定してスクリプトを読んでください。たとえば、dblook -d 'jdbc:derby://localhost/myDB;user=usr' の様にです。
• |  | ijは、set DERBY_OPTS=-Dij.protocol=jdbc:derby://localhost/というコマンドを実行した後に、ijを ijコマンドで実行してください。
• |  | sysinfoは、NetworkServerControl sysinfoコマンドで実行してください。

Getting Started with Derbyにある例では、どのようにDerbyのスクリプトを使って、Derbyのツールを起動するかを説明するために、 組み込みモードでDerbyを使っているものとしています。
sysinfoを使う
Derbyが提供する sysinfoは、Javaの実行環境に関する情報とDerbyのバージョン情報を表示するツールです。
DERBY_HOME/binディレクトリが環境変数のPATHに追加されていれば、sysinfoというツールを実行できます。 sysinfoのスクリプトは、適切にclasspath等の環境変数を設定してsysinfoを実行します。sysinfoを実行するには、コマンドのウィンドウで次のコマンドを実行します。

    sysinfo

ijを動かす
ijというツールを使ってDerbyのデータベースに接続できます。
ijを実行する前に、あらかじめDERBY_HOME/binのディレクトリをPATHの環境変数に追加しておく必要があります。

• |  | ijを実行するには、コマンドラインからijスクリプトを実行してください。 具体的には次のようになります。
    ij
ij のスクリプトは、CLASSPATHのような環境変数の設定と、ijの起動を行います。
• |  | ijでデータベースを作成するためには、次のコマンドを使います。
    ij> connect 'jdbc:derby:testdb;create=true';
このコマンドは、testdbというデータベースをカレントディレクトリに作成して、それにシステムテーブルを書き込んだ後、そのデータベースに接続します。 接続後はijのコマンドラインから、どのようなSQLでも実行することができます。
• |  | ijを終了するときは、次のコマンドを使います。
    ij> exit;

ijのより詳しい情報は、Derby Tools and Utilities Guideを参照してください。
classpathの設定
classpath とは、JVMや他のJavaアプリケーションの実行に必要なクラスライブラリの一覧です。classpathを設定するためのスクリプトがDerbyには用意されていますが、スクリプトを使わずにJavaで直接ツールを呼ぶ場合には、手作業でCLASSPATHという環境変数を設定しなければなりません。
CLASSPATHという環境変数は、一時的または恒久的、あるいはJavaアプリケーションやJVMを実行するときだけ、のいずれでも設定が可能です。
開発環境であれば、コマンドラインのシェルが立ち上げられた時に、CLASSPATHという環境変数を設定するようにするのが良いでしょう。Derby はDERBY_HOME/binディレクトリに、classpathをすばやく設定するためのスクリプトを幾つか用意しています。その幾つかのスクリプトを次に挙げます。
setEmbeddedCP
setEmbeddedCP は組み込みモードの時に使うスクリプトで、derby.jarとderbytools.jarをclasspathに追加します。
setNetworkServerCP
The setNetworkServerCPはnetwork serverを起動するときに使うスクリプトで、derby.jarとderbynet.jarをclasspathに追加します
setNetworkClientCP
setNetworkClientCPはnetwork clientを使ってデータベースに接続するときに使うスクリプトで、derbyclient.jarとderbytools.jarをclasspathに追加します。
classpathを一時的に設定する場合、新しいコマンドのウィンドウを開くたびに適切なスクリプトを実行してください。
また次のコマンドで、スクリプトの実行後に設定したclasspathを見ることができます。

• |  | UNIXでは、echo $CLASSPATHというコマンドを使ってください。
• |  | Windowsでは、echo %CLASSPATH%というコマンドを使ってください。

ijとsysinfoについてもっと詳しく知りたいなら、Derby Tools and Utilities Guideを参照してください。
JDBCを使ったプログラムに慣れている人向けのクイックスタートガイド
この節はJDBCを使ったプログラムに慣れており、classpathの設定方法やJavaのプログラムの実行方法やJDBCドライバの使い方を知っている人向けに書かれています。
この節に書かれていることの詳細は、Derby Developer's GuideとDerby Tools and Utilities Guideを参照してください。
Derbyにて可能な構成
Derbyを実行するための環境設定を行う前に、Derbyにて可能な構成を知るべきです。 なぜなら、その構成はclasspathやドライバ、データベースに接続するURLに影響するからです。
詳しくはDerby Developer's GuideにあるDerbyの構成について説明を参照してください。
組み込み環境の構成
組み込み環境は、同時にひとつのアプリケーションだけがデータベースに接続できる、ネットワーク接続が存在しない環境です。
アプリケーションが同一JVM内で、Derbyのインスタンスを起動するとき、それは組み込み環境での実行ということになります。組込みドライバをロードすることで、Derbyが起動します。
クライアント/サーバ環境の構成
クライアント/サーバ環境では、複数のアプリケーションがネットワーク越しにDerbyに接続することができます。
Derbyは複数のネットワーク接続が可能なサーバフレームワークにて組み込んで実行できます。(この場合フレームワークが起動したDerbyのインスタンスは組込み環境で実行することとなります。しかしクライアントアプリケーションは組み込み環境ではありません。)
任意のJavaで作られたサーバフレームワークにDerbyを組み込むことができます。
サーバにおけるDerbyについての、より詳細な情報についてはDerby Server and Administration Guideを参照してください。
ドライバの一覧
Derbyを配置した構成に応じて、選択可能なドライバは異なります。

• |  | org.apache.derby.jdbc.EmbeddedDriver 組み込み環境向けのドライバです。組み込み環境では、アプリケーションプログラムと同じJVMでDerbyが動作します。
• |  | org.apache.derby.jdbc.ClientDriver ネットワークサーバの環境向けのドライバです。 ネットワークサーバにより、クライアントサーバ環境が実現できます。

データベース接続URL
Derbyの提供する組込みドライバでデータベースに接続するためには、データベース接続URLを使う必要があります。
データベースに接続するためのデータベース接続URLの書式は以下のとおりです。

    jdbc:derby:databaseName;URLAttributes

それぞれの意味を次に示します。

• |  | databaseName 接続しようとするデータベースの名前です。
• |  | URLAttributes 幾つかの属性をデータベース接続URLに記述できます。たとえば、;locale=ll_CCや;create=trueなどです。 より詳しくは、Derby Developer's Guideを参照してください。

Derbyの提供するネットワーククライアントドライバを使う場合、データベースに接続するデータベース接続URLの書式は以下のとおりです。

    jdbc:derby://<server>[:<port>]/databaseName[;URLAttributes=<value>[;...]]

<server>と<port>により、サーバが要求を受け付けているホスト名(またはIPアドレス)とポート番号を記述します。また、databaseNameにより接続するデータベースの名前を記述します。 URLAttributesでは組み込み環境の属性とネットワーククライアントの属性の両方を記述できます。 ネットワーククライアントを使ってネットワークサーバを使うことに関する詳細については、次の情報を参照してください。Derby Server and Administration Guide
文書の記法
この節ではDerbyの文書中の用語や文法、体裁について説明します。
用語
Derbyの文書では環境という言葉を、アプリケーションがDerbyを使う方法をあらわす言葉として使っています。
文書中で、環境は場合によってフレームワークと言い換えられています。 環境には、組み込み環境とクライアント/サーバ環境の二つがあります。
SQLの文法
SQLの文法は、改変されたBNF記法により記述されています。
BNFのメタ文字を以下に示します。

文字 | 意味
| | あるいは 項目のうち、ひとつを選ぶ
[ ] | 省略可能な項目
* | その項目を0回以上繰り返せることを示す。一部のSQL文で特別な意味を持つ。
{ } | [ ]、|あるいは *のような文字で修飾できるよう、項目をグループとして扱う。
( ) . , | 文法の一部であるような、そのほかの句読点。

SQLの文法の表記例

    CREATE [ UNIQUE ] INDEX IndexName
      ON TableName ( SimpleColumnName [ , SimpleColumnName ] * )

Javaのプログラムやユーティリティを実行するための、コマンドラインの文法は以下の例のように常にjavaという単語で始まります。

    java org.apache.derby.tools.ij

この文書はJVMに依存しないように書かれていますが、あらゆるコマンドラインの例やJVMの仕様によるような文法については、あなたが利用するJVMの文書にて間違いがないか検証してください。
体裁
この文書では、SQL文やOSのコマンド、Javaのプログラムについて、その特定の部分を強調するための体裁上の取り決めがあります。
表 1. Derby の文書体裁の取り決め

語法 | 書体 | 例
初出の用語 | イタリック | keysによって定義される
ファイルやディレクトリの名前 | イタリック | C:\derby
ディクショナリのオブジェクト | イタリック | Employeesテーブル
文法の記述において、適切な名称を与えるべき項目 | イタリック | CREATE TABLE tableName
SQL の例 | 太字 あるいは/および 等幅 | SELECT city_name FROM Cities
Javaアプリケーションの例 | 太字 あるいは/および 等幅 | Connection conn = DriverManager.getConnection ("jdbc:derby:Sample")
コマンドラインへの入力 | 太字 あるいは/および 等幅 | java org.apache.derby.tools.ij
例中のコメント | 太字 あるいは/および 等幅 | --この行は無視されます。
SQL(コマンド)的なキーワード | 全て大文字 | CREATE TABLE文を使うことができます。

Derbyのライブラリとスクリプトの全一覧
この付録ではDerbyのライブラリとスクリプトを示します。
Derbyの提供するライブラリ
この節ではDerbyの各ライブラリとその使い方を説明します。
表 2. Derbyのライブラリとその使い方

ライブラリ名 | 使い方
エンジンライブラリ 組込み環境では常にこのライブラリが必要です。クライアント/サーバ環境では、サーバ側でのみこのライブラリが必要です。
derby.jar | 組込みデータベースにて使います。
ツールライブラリ 組み込み環境でツールを使うには、classpathにこのライブラリが必要です。クライアント/サーバ環境では、クライアント側にのみ必要です。
derbytools.jar | Derbyのどのツール(ij, dblook やimport/export等)でも使う必要があります。
derbyrun.jar | Derbyのツールを起動する実行可能なjarファイルです。
ネットワークサーバライブラリ
derbynet.jar | Derbyのネットワークサーバを開始するとき使う必要があります。
ネットワーククライアントライブラリ
derbyclient.jar | Derbyのネットワーククライアントで、ネットワーククライアントドライバを使う必要があります。
ロケールライブラリ
• |  | derbyLocale_es.jar
• |  | derbyLocale_de_DE.jar
• |  | derbyLocale_fr.jar
• |  | derbyLocale_it.jar
• |  | derbyLocale_ja_JP.jar
• |  | derbyLocale_ko_KR.jar
• |  | derbyLocale_pt_BR.jar
• |  | derbyLocale_zh_CN.jar
• |  | derbyLocale_zh_TW.jar
| 対応するロケール向けに翻訳された文言を提供する時に使う必要があります。

Derbyの提供しないライブラリ
JDK 1.3 の環境ではDerby の一部の機能を使うために、幾つかのライブラリをインストールしてclasspathにそれらを追加する必要があります。(JDK 1.4の環境は既にこれらのライブラリを持っています。)

• |  | LDAP (Derby Developer's Guideを参照してください。)
• |  | JTA (Derby Reference Manualを参照してください。)
• |  | JDBC 2.0拡張 (Derby Reference Manualを参照してください。)

Derbyのスクリプト
Derbyのスクリプトは /bin ディレクトリにあります。
Derbyが提供するスクリプトは以下のとおりです。

• |  | bin/dblook dblookを実行するスクリプトです。
• |  | bin/ij ijを実行するスクリプトです。
• |  | bin/NetworkServerControl NetworkServerControlを実行するスクリプトです。
• |  | bin/setEmbeddedCP Derbyが組み込み環境で必要とするライブラリをclasspathに追加するスクリプトです。
• |  | bin/setNetworkClientCP Derbyのネットワーククライアントが必要とするライブラリをclasspathに追加するスクリプトです。
• |  | bin/setNetworkServerCP Derbyのネットワークサーバが必要とするライブラリをclasspathに追加するスクリプトです。
• |  | bin/startNetworkServer ネットワークサーバを起動するスクリプトです。
• |  | bin/stopNetworkServer ネットワークサーバを終了するスクリプトです。
• |  | bin/sysinfo sysinfoを実行するスクリプトです。

Trademarks
The following terms are trademarks or registered trademarks of other companies and have been used in at least one of the documents in the Apache Derby documentation library:
Cloudscape, DB2, DB2 Universal Database, DRDA, and IBM are trademarks of International Business Machines Corporation in the United States, other countries, or both.
Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
UNIX is a registered trademark of The Open Group in the United States and other countries.
Other company, product, or service names may be trademarks or service marks of others.
•