Apache Derby

HSQLDB を試すつもりだったのだが・・。

1.Derbyとは?

フリー百科事典『ウィキペディアWikipedia)』Apache Derby
http://ja.wikipedia.org/wiki/Apache_Derby

IBMから寄贈されたCloudscapeのソースコードを元に、 Apache Software Foundationによってプログラムの開発が進められている、Java技術で実装されたRDBMSのソフトウェア。

Derbyの記事
google:Apache Derby

2.インストール

The Apache Derby Project
http://db.apache.org/derby/
  1. Official Releases の 10.1.1.0 (Aug 3, 2005 / SVN 208786)をクリック
  2. Distributions の db-derby-10.1.1.0-bin.zip をクリック
  3. db-derby-10.1.1.0-bin.zip をダウンロード
  4. jar xvf db-derby-10.1.1.0-bin.zip で解凍
  5. D:\opt 配下へディレクトリを移動し、D:\opt\db-derby へディレクトリ名を変更
  • D:\opt\db-derby
    • demo
    • docs
    • frameworks
      • embedded\bin
      • NetworkServer\bin
    • javadoc
    • lib
      • derby.jar
      • derbyclient.jar
      • derbyLocale_ja_JP.jar
      • derbynet.jar
      • derbyTesting.jar
      • derbytools.jar

3.設定

  1. D:\opt\db-derby 配下にデータベース格納用のディレクトリD:\opt\db-derby\data を作成する。
  2. D:\opt\db-derby\data ディレクトリに、環境変数を設定するバッチファイル D:\opt\db-derby\data\derby_run.bat を作成する
@rem derby setup batch file.
@rem create: 2005/08/28
@rem author: papa33
@rem
@rem set env
@rem
set JAVA_HOME=D:\opt\j2sdk1.4.2_05
set PATH=%JAVA_HOME%\bin;%PATH%
set DERBY_INSTALL=D:\opt\db-derby
set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbyLocale_ja_JP.jar;%DERBY_INSTALL%\lib\derbynet.jar;%DERBY_INSTALL%\lib\derbyclient.jar;%DERBY_INSTALL%\lib\derbytools.jar
java org.apache.derby.tools.sysinfo
echo "java org.apache.derby.tools.sysinfo"
echo "java org.apache.derby.tools.ij"
cmd /f:on

4.起動

derby_run.bat を起動する

D:\opt\db-derby\data>java org.apache.derby.tools.sysinfo
 ------------------ Java 情報 ------------------
Java バージョン:       1.4.2_05
Java ベンダー:         Sun Microsystems Inc.
Java ホーム:           D:\opt\j2sdk1.4.2_05\jre
Java クラスパス:       D:\opt\db-derby\lib\derby.jar;D:\opt\db-derby\lib\derbyL
cale_ja_JP.jar;D:\opt\db-derby\lib\derbynet.jar;D:\opt\db-derby\lib\derbyclient
jar;D:\opt\db-derby\lib\derbytools.jar
OS 名:                 Windows XP
OS アーキテクチャー:   x86
OS バージョン:         5.1
Java ユーザー名:       papa33
Java ユーザー・ホーム: C:\Documents and Settings\papa33
Java ユーザー dir:     D:\opt\db-derby\data
java.specification.name: Java Platform API Specification
java.specification.version: 1.4
 --------- Derby 情報 --------
JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
[D:\opt\db-derby\lib\derby.jar] 10.1.1.0 - (208786)
[D:\opt\db-derby\lib\derbynet.jar] 10.1.1.0 - (208786)
[D:\opt\db-derby\lib\derbyclient.jar] 10.1.1.0 - (208786)
[D:\opt\db-derby\lib\derbytools.jar] 10.1.1.0 - (208786)
 ------------------------------------------------------
 ----------------- ロケール情報 ----------------
現行ロケール :  [日本語/日本 [ja_JP]]
ロケールのサポートが見つかりました: [ja_JP]
         バージョン: 10.1.1.0 - (208786)
 ------------------------------------------------------

5.Derbyの利用

ijはDerbyの対話型環境で、SQLステートメントスクリプトを実行できます。

    
ij バージョン 10.1 ij>
簡単なウォームアップとしてデータベース内にテーブルを作成し、データの挿入、内容の照会を行います。 表(テーブル)は、データベースの中に作成されますが、まだこの段階ではデータベースが作成されていません。Derby では、次の構文でデータベースを作成できます。末尾のセミコロンを忘れないで下さい。
connect 'jdbc:derby:(データベース名);create=true';
ここでは「sample」と言う名前でデータベースを作成します。
ij> connect 'jdbc:derby:sample;create=true';
ij>
作成したデータベース「sample」に対して任意のSQLステートメントを実行できます。たとえばデータベース「sample」に接続して、表(テーブル)「社員」を作成し、3行のデータを挿入し、内容を表示します。
ij> connect 'jdbc:derby:sample;create=true';
ij> connect 'jdbc:derby:sample';
ij(CONNECTION1)> CREATE TABLE 社員 (社員ID DEC(4), 名前 VARCHAR(20), 給与 dec(8), 部門id dec(4));
0 行が挿入/更新/削除されました
ij(CONNECTION1)> INSERT INTO 社員 VALUES (1000, '田中', 0, 20), (1002, '佐藤', 0, 10), (1003, '井上', 0, 20);
3 行が挿入/更新/削除されました
ij(CONNECTION1)> SELECT * FROM 社員;
社員ID |名前                  |給与       |部門ID
 ------------------------------------------
1000 |田中                  |0        |20
1002 |佐藤                  |0        |10
1003 |井上                  |0        |20

3 行が選択されました
ij(CONNECTION1)>
ijを終了するにはexitコマンドを使用します。
ij(CONNECTION1)> exit;

D:\opt\db-derby\data>

6.システムテーブル

第6 章Derby システム表 システム表はすべて、SYS スキーマ内にあります。これはデフォルト・スキーマではないため、システム表にアクセスする照会にはすべて、SYS というスキーマ名で修飾します。
「Japanese IBM CloudsCape リファレンス・マニュアル V10.1 (SD88-6362-01)」より
> java org.apache.derby.tools.ij
>ij バージョン 10.1
ij> connect 'jdbc:derby:sample';
ij> select * FROM SYS.SYSALIASES;
ij> select * FROM SYS.SYSCHECKS;
ij> select * FROM SYS.SYSCOLUMNS;
ij> select * FROM SYS.SYSCONGLOMERATES;
ij> select * FROM SYS.SYSDEPENDS;
ij> select * FROM SYS.SYSFILES;
ij> select * FROM SYS.SYSFOREIGNKEYS;
ij> select * FROM SYS.SYSKEYS;
ij> select * FROM SYS.SYSSCHEMAS;
ij> select * FROM SYS.SYSSTATISTICS;
ij> select * FROM SYS.SYSSTATEMENTS;
ij> select * FROM SYS.SYSTABLES;
ij> select * FROM SYS.SYSTRIGGERS;
ij> select * FROM SYS.SYSVIEWS;
ij> exit;

7.FAQ

データベースの削除は、drop database コマンドではなくて、オペレーティング・システムのコマンドを使うようだ。
Creating, Dropping, and Backing Up Databases
http://db.apache.org/derby/docs/10.0/manuals/develop/develop13.html
There is no drop database command. To drop a database, delete the database directory with operating system commands. The database must not be booted when you remove a database.

8.参考文献

Apache Derby Java接続入門
http://www.oklab.org/storage/selection_db.html
Derby -PukiWiki-
http://tidus.ultimania.org/wiki/index.php?Derby
IBM Cloudscape/Apache Derbyを利用した演習
http://www-6.ibm.com/jp/developerworks/ysl/050603/j_ysl-academic.html
Japanese IBM CloudsCape 概説およびインストール V10.1 (GD88-6360-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3gd88636001
Japanese IBM CloudsCape 開発者ガイド V10.1 (GD88-6361-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3gd88636101
Japanese IBM CloudsCape リファレンス・マニュアル V10.1 (SD88-6362-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3sd88636201
Japanese IBM CloudsCape チューニング・ガイド V10.1 (SD88-6363-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3sd88636301
Japanese IBM CloudsCape ツールおよびユーティリティー・ガイド V10.1 (SD88-6364-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3sd88636401
Japanese IBM CloudsCape サーバーおよび管理ガイド V10.1 (SD88-6365-01)
http://www-1.ibm.com/support/docview.wss?uid=pub3sd88636501
Unofficial DB2 BLOG - db2.jugem.cc
http://db2.jugem.jp/
より
IBM CloudscapeTM インフォメーション・センター
http://publib.boulder.ibm.com/infocenter/cldscp10/index.jsp
スクリプト言語PythonからApache Derby (Cloudscape 10)に接続する方法を解説した資料
Connect to Apache Derby databases using Python
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0505gibson/
Pythonからの接続よりもDerbyとRuntime clientの導入の説明に多くの行数を割いているので、Derbyを導入したい人も参考になる Pure Java RDBMSのパフォーマンス比較
Performance Benchmarking of Embedded Databases
http://jamie.ideasasylum.com/notebook/index.php?id=4
参考の比較対象としてMySQLを取り上げている。
Open Source Database Engines in Java
http://java-source.net/open-source/database-engines
DerbyのアプリケーションをEclipseで開発する
Develop Apache Derby applications in Eclipse
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0501roux/
IBM Integration plug-in for Derby
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0501cline/
IBM DB2 plug-ins for Eclipse, Version 1.0.2 Beta
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0408cline2/index.html
Integrate Cloudscape Version 10 or Derby with Tomcat
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0508bader/