Apache Derbyを使用した開発 - 3連単を当てる: 第1回 Apache Derbyによるデータベース開発

Derbyを使用して今すぐ作業を始めよう

Apache Derbyを今すぐ使用してみたいですか? この記事では「Apache Derbyを使用した開発 - 3連単を当てる」と題して、Derbyデータベースをすぐに使用できるよう、Apache Derbyをシリーズで紹介していきます。シリーズ第1回目となるこの記事では、リレーショナル・データベースの基本的な概念を紹介し、その概念がDerbyデータベースとどう関係するかに焦点を当てて説明します。簡単な例を使ってACIDテストとはどういうものかを説明し、Apache Derbyデータベースに対話形式でアクセスしてクエリを実行することができるijツールについて見ていきます。このシリーズの残りの記事では、Apache Derbyでの作業をマスターする際に役立つ情報を紹介していきます。

Robert Brunner, NCSA Research Scientist, Assistant Professor of Astronomy, University of Illinois, Urbana-Champaign

Robert J. Brunner photoRobert J. Brunnerは、米国立スーパー・コンピューター応用研究所に科学者として勤務するかたわら、イリノイ大学アーバナ・シャンペーン校で天文学の助教授を務めています。何冊かの著作と、さまざまな分野にわたる数多くの記事や解説書を発表しています。連絡先はrb@ncsa.uiuc.eduです。



2006年 3月 28日

リレーショナル・データベースとは

データベース・アプリケーションの開発はすぐにでも始められますが、マスターするには非常に時間がかかります。その点Apache Derbyは軽いデータベースであるため、マスターするのに長い時間をかける必要はありません。この記事で紹介する手順に従えば、すぐにでもApache Derbyを使用した作業を開始することができます。

しかし、このシリーズ記事の目標は、ただ作業を開始するだけではなく、Apache Derbyでの作業をマスターすることにあります。最初に、ACIDテストについて知る必要があります。このテストにより、リレーショナル・データベースの基本原則を簡潔に要約することができます。


ACIDテスト

言うまでもなく、ダイヤモンドは貴重な商品です。その貴重さゆえに、偽造品の流通は深刻な問題となります。ダイヤモンドが本物かどうかを判断するための簡単でよく知られている(少なくとも映画の中では)方法として、ガラス板の表面にダイヤモンドを滑らせるという方法があります。ダイヤモンドは発見されている物質の中でも最も硬い物質の1つであるため、本物のダイヤモンドであればガラスの表面を簡単に切ることができますが、偽造品の場合(特にガラスそのものでできている場合)は、ガラスを切ることはできません。

ソフトウェア開発者にとって、データベースはダイヤモンドと同じくらいに貴重なものです。データベースを使用する場合、データを安全に保管することができ、後から簡単にそのデータを取り出すことができるものでなければなりません。また、1つのデータベースを複数のプログラムやユーザーが処理する場合、お互いに干渉することなく処理することができなければなりません。これからの説明にあたっては、自分が銀行を所有していると考えるとわかりやすいでしょう。銀行のデータベースにはさまざまな要件がありますが、以下の要件を満たしている必要があります。

  • 適切なデータを安全に保管できること
  • 適切なデータをすばやく取り出せること
  • 複数のユーザーによる同時取引をサポートしていること

これらの要件をまとめてACIDテストと呼びます。ACIDとは、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(耐久性)のそれぞれの頭文字をとった言葉です。

原子性とは、データベース操作をグループ化し、単一のユニットとして処理することができる特性のことです。

一貫性とは、こうしてグループ化したユニットやトランザクション内のすべての操作を正常に実行できること、あるいは操作をまったく行わないことのいずれかを保証する特性のことです。すなわち、いかなる場合でもデータベースを処理の途中の状態にしておかないという特性です。こうした特性がなぜ重要であるかを理解するためには、普通預金口座から当座預金口座へと預金が転送される銀行取引を考えるとわかりやすいでしょう。普通預金の口座から預金が引き落とされ、その預金が当座預金の口座に加算される前に転送処理が失敗した場合、その人の預金残高が減ってしまうため、銀行はその顧客の怒りを買ってしまうでしょう(その結果、顧客を失うかもしれません)。原子性は、この2つの操作(普通預金口座からの引き落としと、当座預金口座への預け入れ)を1つの操作として処理することを可能にし、一貫性は、取引における2つの操作が常に成功または失敗のいずれかの結果になるように制御します。こうすることにより、口座の預金が紛失することはなくなります。

独立性とは、独立した一連のデータベース処理が、お互いに競合しない形で実行される特性のことです。ここでも銀行を例にとり、2人の預金者が同時に口座間で預金をやり取りする場合を考えてみましょう。この場合、両方の取引はデータベース内で別々に管理する必要があります。これを一緒に管理してしまうと、それぞれの預金が間違った口座に入ってしまう可能性があり、銀行はこの顧客の怒りを買ってしまうでしょう(その結果、顧客を2人失ってしまうかもしれません)。

耐久性とは、データベースに対する処理が予期せず終了した場合に、データベースを保護する特性のことです。電源が切れたときにテレビやコンピュータが動かなくなることはそれほど深刻な問題ではないかもしれませんが、これがデータベースとなるとそうはいきません。預金の転送中に銀行のコンピュータの電源が切れ、この取引が紛失したら困ったことになります。耐久性は、預金の転送処理中にデータベース処理が異常終了した場合、異常終了した処理をデータベースの再起動時に回復し、正常な処理を続行できるように制御します。

ACIDテストに合格するのは簡単なことではありません。単純な構造を持ったデータベースの多くは、このテストに合格することができません。重要なe-ビジネスやWebベースのアプリケーションにおいては、ACIDテストに合格することは必須条件です。このことが、非常に多くの企業や個人によってIBM DB2® Universal Database、Oracle 10g、Microsoft® SQL Server などのエンタープライズ・レベルのデータベース・システムが利用されている理由の1つとなっています。これらのデータベースは、ACIDテストに完全に準拠しています。こうしたデータベースと比較した場合、Apache Derbyデータベースは忘れられた継子のように見えるかもしれません。しかし、Apache DerbyデータベースもACIDテストに完全に準拠しています。自信を持ってWebベースのデータベース・アプリケーションの開発に使用することができます。さらに、Apache Derbyを使用して開発作業を開始し、その後アプリケーションやビジネスが拡大した場合には、そのデータベース・アプリケーションをDB2などのエンタープライズ・レベルのデータベース・システムに最小限の労力で移行することができます。


Apache Derbyを使用してデータベースを作成する

データベースを使用するには、まずデータベースを作成する必要があります。Derbyのダウンロードおよびインストール処理の際に、いくつかのツールを入手することができます。こうしたツールの1つにijツールがあります。これは、Apache Derbyのデータベース・サーバーと通信することができる、対話形式のJava™ ツールです。ここからは、ijツールを使用して簡単なデータベース操作(データベースの作成など)を実行する方法について説明します。

このシリーズの最初の記事では、Derbyソフウトウェアのダウンロード方法とインストール方法について説明しました。まだ読んでいない場合、最初にそちらの記事から読んでください。特に、記事の説明に従って試用版のApache Derbyソフトウェアをコンピュータにインストールすることが重要です。

最初の記事の終わりに、システムを正しく設定してDerbyデータベースを使用する方法が説明されています。この部分の説明を要約すると、DerbyはJavaのアプリケーションであるため、CLASSPATH環境変数を正しく初期化する必要がある、ということです。DERBY_INSTALL環境変数を設定し、以下のコマンドを入力することにより、関連するJava Archive(JAR)ファイルをシェル初期化ファイル(.bashrcなど)内のCLASSPATH環境変数に追加することができます。

export DERBY_INSTALL='/opt/Apache/db-derby-10.1.2.1-bin'
export CLASSPATH=$DERBY_INSTALL/lib/derby.jar
export CLASSPATH=$CLASSPATH:$DERBY_INSTALL/lib/derbytools.jar:.

以下のコマンドを実行してバッチ・ファイルを作成することにより、Microsoft Windows®システム上でも同じような結果が得られます。

set DERBY_INSTALL=C:\Apache\db-derby-10.1.2.1-bin
set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar
set CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%\lib\derbytools.jar;.

これらの2つの例では、CLASSPATH環境変数(エクスポート経由、またはシェル・コマンド経由)に対する初期化が2行にまたがって記述されていますが、これは単純にこの記事のスペースに制限があるため2行にしているだけです。変数の初期化を実行するコマンドの記述は、1行でも2行でもかまいません。

これで、いつでも新しいコマンド・プロンプトを開いてこのバッチ・ファイルを実行する準備ができました。WindowsとUNIX® のいずれの場合も、Derbyソフトウェアをインストールしたディレクトリをスクリプト・ファイルに正しく指定してください。

システム環境が正しく設定されたら、ijツールを実行して、リスト1に示されているように新しいディレクトリを作成することができます。

リスト1.ijツールの使用
rb$ echo $CLASSPATH
/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar:
/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar:.
rb$ mkdir derbyWork
rb$ cd derbyWork
rb$ java org.apache.derby.tools.ij
ij version 10.1
ij> connect 'jdbc:derby:test;create=true' ;
ij> exit ;
rb$ ls -CF
derby.log       test/

最初にCLASSPATH環境変数を表示します。この処理を時々実行すると、後でエラーを回避することができるので便利です。この例の場合、Derby JARファイルは明らかに存在していることがわかります。次のステップは、新しいディレクトリを作成し、そのディレクトリ内で作業を実行するように設定を変更することです(この例ではderbyWorkという名前でディレクトリが作成されていますが、任意の名前でかまいません)。こうすることにより、ijツールを使用して新しいデータベースを作成した場合に発生する処理を簡単に確認することができます。準備ができたら、ijツールを起動することができます。

ijツールはJavaのアプリケーションであるため、Java Virtual Machine(JVM)を起動する必要があります。また、実行したいメイン・クラスの適切な名前(この場合はijツール)も指定します。Java例外が発生する場合、CLASSPATH環境変数をもう一度確認し、derbytools JARファイルが存在していることを確認してください。

ijツールが起動されるとバージョン情報が表示され、大なり記号(>)で示されるプロンプトが表示されます(デフォルトの場合)。このプロンプトから、データベースに接続するconnectコマンドを実行します。このconnectコマンドには、どのデータベースに接続するかを指示するインジケータ文字列が必要です。この例では、jdbc:derby:test;create=trueが接続文字列になります。正式には、この文字列はJava Database Connectivity (JDBC) URLと呼ばれています(JDBCは、Javaのアプリケーションをデータベースに接続するJava技術です)。

この記事ではJDBC URLの詳細な説明はしませんが(詳細については、「参考文献」を参照)、この例は構造が単純なため、各項目は以下のように分析することができます。

  • jdbcは、ijツールがデータベース・サーバーに接続する際の手段です。
  • derbyは、データベース・サーバーに接続する際にijツールが使用することができるJDBCドライバ・クラスの名前です。
  • testは、作成するデータベースの名前です。
  • create=trueは、Derby JDBCドライバに渡される特定のプロパティです。JDBCのプロパティはJDBC URLの最後の部分に記述され、各プロパティはセミコロンで区切られます。

JDBC URLは、データベース・サーバーに正常に接続できるように文字列としてconnectコマンドに渡す必要があるため、一重引用符(’)で囲みます。最後に、セミコロンを追加して(ijツールはJavaのツールであるため)リターン・キーを押し、ijツールにコマンド実行の指示を与えます。少し経つと、ijツールによって新しいプロンプトが表示されます。これで新しいデータベースが作成されました。

コマンドの実行結果を確認する場合、exitコマンドでijツールを終了し(セミコロンを付けるのを忘れないでください)、ijツールを実行したディレクトリ内を確認してください(UNIXシステムの場合はlsコマンドを使用し、Windowsシステムの場合はdirコマンドを使用します)。derby.logという名前で新しいファイルが作成され、testという名前(JDBC URLで指定したデータベース名と対応しています)で新しいフォルダが作成されているはずです。

興味があれば、データベース用に作成されたtestディレクトリ内を確認してみてください。リスト2は、testディレクトリの内容を示しています(ここに示されている名前と内容は、実際のものと多少異なる場合があります)。

リスト2.testディレクトリの内容
log/                    seg0/                   service.properties  
rb$ ls -CF test/log/
log.ctrl        log1.dat        logmirror.ctrl
rb$ ls -CF test/seg0/ 
c10.dat         c191.dat        c221.dat        c2c1.dat       c90.dat
c101.dat        c1a1.dat        c230.dat        c2d0.dat       ca1.dat
c111.dat        c1b1.dat        c241.dat        c2e1.dat       cb1.dat
c121.dat        c1c0.dat        c251.dat        c2f0.dat       cc0.dat
c130.dat        c1d1.dat        c260.dat        c31.dat        cd1.dat
c141.dat        c1e0.dat        c271.dat        c41.dat        ce1.dat
c150.dat        c1f1.dat        c281.dat        c51.dat        cf0.dat
c161.dat        c20.dat         c290.dat        c60.dat
c171.dat        c200.dat        c2a1.dat        c71.dat
c180.dat        c211.dat        c2b1.dat        c81.dat

これらのディレクトリの内容を確認すると、新しいディレクトリを作成しただけでこんなに多くの処理が同時に実行されることに驚くかもしれません。しかし、Apache DerbyはACIDに準拠したデータベースであることを忘れないでください。見えないところで多くの処理が実行されています。データベースのメイン・ディレクトリ(この場合はtestディレクトリ)内には、logディレクトリ、seg0ディレクトリ、プロパティ・ファイルが作成されます。logディレクトリにはデータベース固有のログ・ファイルが保存され、Derbyはこのログ・ファイルを使用して、一連のデータベースに対する操作や処理の間に発生した動作を記録します。データベースに対する操作の途中で何らかの理由によりDerbyデータベース・サーバーが終了した場合、サーバーはログ・ファイルの記録を参照してどこで処理が中断したのかを判断し、データベースを正常な状態に復旧することができます。

この例では、seg0ディレクトリにはテスト・データベースに使用するデータ・ファイルが保存されます。データベースを作成しただけでは、そのデータベースは(おそらく)空であるはずなのに、こうしたファイルも同時に作成されるということを不思議に感じるかもしれません。このファイルが必要な理由は単純なものです。データベースにデータを格納する場合、新しいファイルを1つ作成してそこにデータを詰め込むだけではありません。パフォーマンス上の理由から(および、ACIDテストに合格するため)、データベースは多くのファイルにデータを分割して格納する必要があります。データは、ページと呼ばれる特殊な構造でこれらのファイルに書き込まれます。データ・ページの内容は、データそのものと、ページ上のデータに関する情報(メタデータと呼ばれることもあります)とから構成されています。これらのファイルとファイル内のページをすべて作成することにより、データベースが最初に作成されたときに、必要に応じてすぐにデータを格納することができます。


ijツール

ijツールは強力なツールです。データベースの作成(これはすでに紹介しました)やデータベース内に新しい項目を追加するなど、ijツールを使用して幅広い操作を行うことができます(ijツールについては、これから先の記事でも紹介します)。ijツールにはhelpコマンドが用意されています。リスト3に示されているように、いくつかの便利なコマンドを説明付きで一覧表示するコマンドです。このリストのコマンド記述は、スペースの制限にあわせて調整されています。実際のコマンド記述は、このリストの記述とは多少異なって表示される場合があることに注意してください。

リスト3.ijツールによるヘルプ情報の表示
rb$ java org.apache.derby.tools.ij
ij version 10.1
ij> help ;
 
 Supported commands include:
 
  PROTOCOL 'JDBC protocol' [ AS ident ];
                               -- sets a default or named protocol
  DRIVER 'class for driver';   -- loads the named class
  CONNECT 'url for database' [ PROTOCOL namedProtocol ] 
                             [ AS connectionName ];
                               -- connects to database URL
                               -- and may assign identifier
  SET CONNECTION connectionName; -- switches to the specified 
                                    connection
  SHOW CONNECTIONS;            -- lists all connections
  AUTOCOMMIT [ ON | OFF ];     -- sets autocommit mode for the 
                               -- connection
  DISCONNECT [ CURRENT | connectionName | ALL ];
                               -- drop current, named, or all 
                               -- connections; the default is CURRENT
 
  COMMIT;                      -- commits the current transaction
  ROLLBACK;                    -- rolls back the current transaction
 
  PREPARE name AS 'SQL-J text'; -- prepares the SQL-J text
  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;
                               -- executes the statement with 
                               -- parameter values from the USING 
                               -- result set row
  REMOVE name;                 -- removes the named previously 
                               -- prepared statement
 
  RUN 'filename';              -- run commands from the named file
 
  ELAPSEDTIME [ ON | OFF ];    -- sets elapsed time mode for ij
  MAXIMUMDISPLAYWIDTH integerValue;
                               -- sets the maximum display width for
                               -- each column to integerValue
 
  ASYNC name 'SQL-J text';     -- run the command in another thread
  WAIT FOR name;               -- wait for result of ASYNC'd command
 
  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';
                               -- gets a cursor (JDBC result set) 
                               -- on the query
                               -- SCROLL cursors are only available 
                               -- in JDBC 2.0 and higher. 
                               -- (Cursor scroll type is ignored in 
                               -- JDBC 1.X.) 
  NEXT name;                   -- gets the next row from the 
                               -- named cursor
  FIRST name;                  -- gets the first row from the 
                               -- named scroll cursor
  LAST name;                   -- gets the last row from the 
                               -- named scroll cursor
  PREVIOUS name;               -- gets the previous row from the 
                               -- named scroll cursor
  ABSOLUTE integer name;       -- positions the named scroll cursor
                               -- at the absolute row number
                               -- (A negative number denotes 
                               -- position from the last row.) 
  RELATIVE integer name;       -- positions the named scroll cursor 
                               -- relative to the current row
                               -- (integer is number of rows)
  AFTER LAST name;             -- positions the named scroll cursor 
                               -- after the last row
  BEFORE FIRST name;           -- positions the named scroll cursor 
                               -- before the first row
  GETCURRENTROWNUMBER name;    -- returns the row number for the 
                               -- current position of the named 
                               -- scroll cursor (0 is returned when 
                               -- the cursor isn't positioned 
                               -- on a row.) 
  CLOSE name;                  -- closes the named cursor
  LOCALIZEDDISPLAY [ ON | OFF ];
                               -- controls locale sensitive data 
                               -- representation
 
  EXIT;                        -- exits ij
  HELP;                        -- shows this message
 
 Any unrecognized commands are treated as potential SQL-J commands 
 and executed directly.
 
ij>

リスト3に記述されているコマンドのほとんどが、おそらく初めて目にするものだと思います。しかし大丈夫です。まだApache Derbyの学習を始めたばかりです。

リスト4に示されているように、ijツールを使用して、1つのデータベースに対して複数の接続を作成することができます。

リスト4.ijツールを使用した接続の作成
ij> connect 'jdbc:derby:test;create=true' ;
WARNING 01J01: Database 'test' not created, 
connection made to existing database instead.
ij> connect 'jdbc:derby:test' ;
ij(CONNECTION1)> show connections ;
CONNECTION0 -   jdbc:derby:test
CONNECTION1* -  jdbc:derby:test
* = current connection
ij(CONNECTION1)> disconnect ;
ij> show connections ;
CONNECTION0 -   jdbc:derby:test
No current connection
ij> set connection CONNECTION0 ;
ij> show connections ;
CONNECTION0* -  jdbc:derby:test
* = current connection
ij> exit ;

この例では、最初に元のJDBC URLを使用してテスト・データベースに接続しようとします。しかし、テスト・データベースがすでに存在しているため、警告を受信します。この際、コードは新しいconnectコマンドを発行し、;create=trueのJDBCプロパティが無効になるようにJDBC URLを変更します。今度は警告を受信することはありませんが、プロンプトの大なり記号の前に文字列「(CONNECTION1)」が表示されます。最初にテスト・データベースを作成したときにはこのようなことはなかったため、少し変わったプロンプトに感じるかもしれません。

「(CONNECTION1)」がプロンプトに表示されれば、警告の有無にかかわらず、テスト・データベースへの接続が正常に作成されたことになります。同じデータベースに対して2つの接続が作成されたことを表示するには、show connections ; コマンドを実行します。このコマンドを実行すると、2つの接続と関連するURLが表示され、どちらの接続が現在の接続として設定されているか(この場合はCONNECTION1)が表示されます。

今のところ、同じデータベースに対して2つの接続は必要ないため、disconnect ; コマンドを使用して現在の接続を閉じます。もう一度show connections ; コマンドを実行すると、現在開かれている接続のみが表示され、現在の接続として設定されている接続はないことが表示されます。特定のデータベースに対してコマンドを送信するには、接続が有効になっているか、現在の接続として設定されている必要があるため、現在の接続を正しく変更する必要があります。接続先の名前を最終パラメータとして指定してset connectionsコマンドを実行すると、現在の接続を簡単に変更することができます。show connections ; コマンドをもう一度実行すると、現在の接続の一覧が接続名とともに表示されます。最後にexit ; コマンドを実行し、現在の接続をすべて切断してijツールを終了します。


まとめ

この記事ではACIDテストを中心に、リレーショナル・データベースについて紹介しました。ACIDテストを使用することにより、開発者はデータベース・システムの実用性を判断することができます。ACIDテストに合格するために必要なすべての機能をサポートするJavaベースの軽いデータベースが必要な場合、Apache Derbyデータベースを使用してください。この記事では、Derbyデータベースに付属されているijツールについても紹介しました。このツールは、データベースへ接続する場合や、データベースに対してコマンドを発行する場合に使用することができます。この記事では、ijツールを使用して新しいデータベースを作成し、その際に作成されたディレクトリやファイルについて確認しました。

このシリーズの次回の記事では、スキーマを使用したデータベース開発の全体的な概要を見ていきます。その前に、もう一度この記事の内容を確認しておいてください。

参考文献

学ぶために

  • このシリーズの最初の記事である「Apache Derbyを使用した開発: 3連単を当てる: Apache Derbyの紹介」(2006年2月、developerWorks)を読んでください。Apache Derbyソフトウェアのダウンロード方法とインストール方法を紹介しています。
  • JDBCの詳細情報を、JDBCの公式サイトから参照してください。
  • Apache Derbyデータベースの使用に関する詳細情報を、Apache Derby Projectのオンライン・マニュアルから参照してください。
  • Apache Derbyのダウンロードとインストールに関する詳細情報が記述された、Apache Derby Projectのチュートリアルを参照してください。
  • Apache Derby Projectのサイトにあるこの記述を参照し、ダウンロードの適切な検証方法を確認してください。
  • Derbyを今すぐ使用するには、developerWorks のApache Derby Projectのエリアにある記事やチュートリアルなどの参考文献を参照してください。
  • developerWorks Open source ゾーンでは、Apache Geronimo 関連記事一覧無料チュートリアルを提供しています。
  • この記事で紹介した技術やその他の技術に関する書籍については、Safari bookstoreから参照してください。

製品や技術を入手するために

  • Apache Derby Projectのホーム・ページから、Apache Derbyをダウンロードしてください。
  • IBM Cloudscape™ をダウンロードしてください。これはApache Derbyと同等の機能を持ったアプリケーションで、サポート、マニュアル、インストーラ、サンプルが含まれています。しかし、元となるデータベース・エンジンは、Derby、Cloudscapeともに共通です。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source, Information Management
ArticleID=232665
ArticleTitle=Apache Derbyを使用した開発 - 3連単を当てる: 第1回 Apache Derbyによるデータベース開発
publish-date=03282006