Unofficial DB2 Wiki
Derby memo
最終更新:
db2
-
view
Apache Derby
- Apache Derbyは、Pure JavaのRDBMS実装
- ライセンスはApache License, Version 2.0
- Embedded modeでJavaプログラム内に埋め込んで使用可能
- ネットワーク上にサーバとして接続を待ち受ける事も可能
- SQL92/99に多くの部分で準拠
- トリガー、ストアドプロシージャ、制約、外部キー、ビューなどRDBMSに必用とされる機能がほとんど実装されており、機能的な制約が少ない
- 管理作業不要
- 動作に必用なメモリーフットプリントが小さい
- XA接続可能なJDBCドライバが用意されている
- 必用なJDKは1.3以上
ダウンロード
導入は*zip,tgzファイルをダウンロードして、任意のディレクトリに展開するだけです。
2つのモード
Embedded mode (エンベッデッドモード)
- 起動・停止の手間が掛からない
- 同時に一つのJVMからしか接続できない(1つのJVM内での複数接続は可能)
- ネットワーク経由での接続はできない
- 終了前にはShutdown処理が必要
- Shutdown無しにJVMを終了した場合、次回接続時にクラッシュリカバリ処理が走る
- JDBCのURLに;shutdown=trueを付けて接続するとShutdownされる
jdbc:derby:test;shutdown=true ⇒ 'test'をShutdown jdbc:derby;shutdown=true ⇒ 全てのデータベースをShutdown
Network Server mode (ネットワークサーバーモード)
- ネットワーク経由で複数のJVMから接続可能
- サーバ側で起動/停止(Shutdown)の操作が必用(一般的なRDBMSと同じ)
- ネットワークモードの操作には、derbynet.jarに含まれるorg.apache.derby.drda.NetworkServerControlを使用する
java org.apache.derby.drda.NetworkServerControl start
で起動(CLASSPATH上に、derbynet.jarとderby.jarが必用)
java org.apache.derby.drda.NetworkServerControl shutdown
で停止(CLASSPATH上にderbynet.jarが必用)
- デフォルトのポート番号は1527番
2つのモードの比較
名前 | JDBCドライバクラス | クライアントに必用なJARファイル | JDBC URL | 備考 |
Embedded | org.apache.derby.jdbc.EmbeddedDriver | derby.jar (Derby本体を含む) | jdbc:derby:DB名 | 同時に接続できるのは一つのJVM |
Network Server | org.apache.derby.jdbc.ClientDriver | derbyclient.jar | jdbc:derby://ホスト名:ポート番号 | DB2のJDBCドライバやコマンドラインツール(DB2 CLP)からでも接続可能 |
データベースの作成
- JDBCのURLに、;create=trueを追加する事でデータベースが自動的に作成される(すでに同じ名前のデータベースがある場合は作成されず、そのデータベースに接続される)
(例)
jdbc:derby:mydatabase;create=true jdbd:derby://hostname:9999/myremotedb;create=true
システムディレクトリ(derby.system.home)
- Embedded modeでもNetwork Serever modeでも、Javaを実行したカレントディレクトリがDerbyのシステムディレクトリになり、そのディレクトリ以下にデータベースファイルが作成される
- システムディレクトリは、プロパティのderby.system.homeを設定する事で上書き可能
認証
- デフォルトでは、認証が機能していない。つまりどんなユーザID,パスワードでも接続可能
- ユーザIDを指定しない場合は、"APP"という名のユーザIDで接続した事になる
- ただしDataSourceのプロパティではパスワードを空文字列("")には設定できない点に注意が必用
管理
- Derbyは、表からデータを削除してもデータ領域をOS(File system)には返さず、次のデータ挿入時に再利用する
- ストアドプロシージャのSYSCS_UTIL.SYSCS_COMPRESS_TABLEまたはSYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLEを実行すると未使用領域を開放できる
その他
- Derbyが出力するメッセージを日本語にしたい場合は、derbyLocale_ja_JP.jarをCLASSPATHに含める
- Derbyは、SQL文中に/* */コメントを入れる事が出来ないようだ
LINK
- Apache Derby入門 - Embedded modeでのプログラムについての解説
- Derby Console - Windows用環境設定バッチファイル