Apache Derbyを使用した開発 -3連単を当てる:Apache Derbyの紹介

とにかく使用してみましょう -- そしてそのシンプルさを享受してください

ほとんどすべてのアプリケーション開発者は、ある時点でデータを保存する必要に迫られます。インターネット対応またはWeb対応アプリケーションの普及に伴い、この必要性はさらに高まっています。定期コラム「Apache Derbyを使用した開発 -- 3連単を当てる」のこの回では、Apache Derbyを紹介します。Apache Derbyは、オープン・ソースの、フットプリントの小さい、標準ベースのJavaデータベース・システムです。他のデータベース・システムとの比較を試み、ダウンロードとインストールについて論じます。この記事を読み終えるころには、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年 2月 14日

Apache Derbyプロジェクト

この記事は、新シリーズ「Apache Derbyを使用した開発 -- 3連単を当てる」の第1回です。この回は、Apache Derbyプロジェクトによって開発されたソフトウェア・テクノロジーの考察に的を絞っています。Apache Derbyプロジェクトによってリリースされた、このソフトウェアは、オープン・ソースのデータベース・システムで、IBMからApache Software Foundationに提供されたテクノロジーに基づいています。Apache Derbyデータベース・ソフトウェアはJava™プログラミング言語で記述されているため、高い移植性を持つと同時に、小さなパッケージのままでも画期的なパフォーマンスを提供します。

また、Derbyデータベースは多数のデータベース標準に基づいていますので、データベースの経験者ならDerbyを使い始めるのも簡単ですし、必要に応じて既存のDerbyデータベース・アプリケーションを他の標準準拠データベース・システムに移植するのも簡単です。Derbyは公式にリリースされてから1年も経たないため、有用な情報が不足しています。この不足を補うためにIBM developerWorksではたくさんの記事やチュートリアルを提供しています。このシリーズはデータベース・システムの経験が浅いユーザーを対象としています。developerWorks Webサイトでは、Apache Derbyデータベース・ソフトウェアに関する詳細な紹介記事や、Java Enterpriseソフトウェア・スタックとの統合方法に関する情報を提供しています。

このシリーズの方針に基づき、この記事では最初に少し回り道をして一般的なデータベース・システムを考察し、続いてApache Derbyについて詳細に論じます。


データベース・システムについてのちょっとした余談

意識しようとしまいと、インターネット・サーフィンをしている間は、データベースを用いたさまざまなWebアプリケーションと対話しています。この言い方には馴染みがないかもしれませんので言い換えると、あなたが見ているWebサイトはデータベースに保存されたデータを使用して動的に作成されている、ということです。たとえば、以下のようなタイプのWebサイトについて考察してみましょう。

  • 図1に示すdeveloperWorksのオープン・ソース・プロジェクト・エリアのような情報ポータル・サイト
  • ローカル・ニュースやスポーツ記事を掲載する新聞社のWebサイト
  • 金融ポートフォリオをモニターするための、銀行や投資機関などの金融関連のWebサイト
  • ドライブ・マップを提供するWebサイト
  • あるテーマについて詳細な情報を得られるWebサイトを見つけるための検索エンジン
図1. developerWorksのオープン・ソース・プロジェクト・エリア
The developerWorks Open source project area

上記のどの例でもデータベースを使用して情報の保存、検索、取得を動的に行っています。このようなアプリケーションでは、Webサイトが必要な情報(住所など)をユーザーから収集し、アプリケーション・データベースに対して検索を実行し、要求されたデータを収集して適切に表示します。

こうしたデータベース・システムの多くは巨大で複雑です。ドライバーに適切な地図情報を提供するにはどんなに膨大な画像が必要になるか想像してみてください。データを保存してアプリケーションが利用できるようにするのは明らかに大仕事です。IBMはIBM DB2®で、Microsoft®はMicrosoft SQL Serverでそれに対応しています。他にも多くのベンダーが同様のデータベース・ソフトを開発しています。こうした商用データベース・システムは企業規模の機能をフルに備えています。その結果、大量のデータを保持し、多数のユーザーと同時に対話することが可能で、複数の大型計算機をまたいだ規模になることもあります。

データベースの役割

ご存知のとおり、データベース・システムを扱うのは簡単ではありませんし、運用には相応の経費がかかります。歴史的に見ると、このようなデータベースを扱う作業は3つのカテゴリーに分けられてきました。それらの役割は重複する部分もありますが、それぞれの責務は以下のように分かりやすいものです。

  1. データベース管理者(DBA)-- データベース・システム運用の全体について責任を持ちます。具体的には、土台となるハードウェアの選択と配置、データベース・サーバーのインストールと最適化(特に稼動中のハードウェア上に構築する場合)、データのバックアップや修復などの日次運用などがあります。
  2. データベース開発者 -- 実際に運用するデータベースに責任を持ちます。データベース、スキーマ、テーブル、テーブルのリレーション、インデックスの設計や、クエリーの最適化などを行います。
  3. データベース・アプリケーション開発者 -- JDBC(Java Database Connectivity)やODBC(Open Database Connectivity)などのデータベースAPI(Application Programming Interface)を使用して、下層のデータベースとアプリケーションを結び付け、必要なデータを保存・取得できるようにする責任を持ちます。

以上の説明に気後れしたとしてもかまいません。データベースの扱いは歴史的に見ても難しいものです。なぜ難しいのかを理解するため、オンライン・バンキングを例にとって具体的に考察してみましょう。銀行のWebサイトに接続すると、自らを証明する情報(通常はユーザー名とパスワード)を入力することにより自分の口座にアクセスできます。自分のデータを見たり、料金の払い込みをしたり、口座振替ができます。銀行のデータベースは、該当する情報を即座に検索し、トランザクションを間違いなく管理し、ユーザーと安全に対話する必要があります。また、最も重要な点は、データを一切喪失することなくこれらを実行しなければならないことです。しかも銀行は、同時に多数のユーザーに対してこれらを行わなければなりません。

しかし、すべてのアプリケーションがこれほど注文の多いものとは限りません。初心者にとってはなおさらです。データベースの扱いを学習中の人や、データベース・アプリケーションのプロトタイプがすぐに欲しい人にとっては、たいていの商用データベース・システムはやっかいな代物です。幸いなことに、Apache Derbyデータベースを使ってデータベース対応アプリケーションを開発するのは思ったより簡単です。以下はApache Derbyプロジェクトの基礎入門編です。次回以降のコラムでは、Apache Derbyデータベースを使用したデータベース・アプリケーションの構築方法について具体例を挙げて説明します。


Apache Derbyプロジェクトとは

Apache Derbyプロジェクトの目的は、使いやすくて多くのアプリケーションに適したJavaプログラミング言語だけで記述したオープン・ソースのデータベースを構築することです。ご想像どおり、データベースの開発は簡単ではなく、Apache Derbyデータベースもその例外ではありません(オープン・ソース・ソフトウェアですから、ご自分で確かめてみてください)。しかし、Derbyプロジェクトはゼロからスタートしたものではありません。さかのぼって1996年に新会社Cloudscapeが、Java言語で記述したデータベース・サーバーを開発することを目的に設立されました。この会社は1年後に最初の製品をリリースしました。その製品名は最終的に「Cloudscape」に改められました。Cloudscape社は1999年に大手データベース・ベンダーであるInformix Software社に買収されました。さらにInformix Software社は2001年にIBMによって買収され、IBM Cloudscape™データベース・システムは組み込みデータベース・エンジンとして多くのIBM製品の中に使われました。2004年4月、IBMはCloudscapeデータベース・ソフトウェアをApache Software Foundationに贈与し、Apache Derbyプロジェクトが生まれました(図2参照)。

図2. Apache DerbyプロジェクトのWebサイト
The Apache Derby project Web site

その当時、CloudscapeデータベースのJavaコードは約50万行にも及んでいたので、Apache Derbyプロジェクトに適切に移行するには時間がかかりました。成育期間を経て、Derbyが公式にリリースされたのは2005年7月のことです。ですから、新参者のように見えるDerbyの背後には、10年近くに及ぶ開発の歴史があるのです。

IBMはApache Derbyのソース・コードから構築されたCloudscapeデータベースを引き続き管理しています。IBMはCloudscapeデータベースの無料ダウンロードを提供しています。また、より安心してデータベースを構築したいお客様には、有料で相談に応じています。さらに、Sun Microsystems社は、パッチを当てたApache DerbyをJavaデータベース製品に含めることを発表しています。このようにIBMとSun Microsystems社から強力なサポートを得て、Apache Derbyデータベースは明るい未来を約束されています。Derbyデータベースは、SQL-92やJDBC Version 3.0など多くのデータベース標準規格に準拠しています。したがって、最初はDerbyデータベース・システムで開発したアプリケーションでも、IBM DB2 Universal Database™など他のデータベース・システムに容易に移植することができます。

Apache Derbyデータベースの概要

Apache DerbyはJava言語で記述されているので、適切なJVM(Java Virtual Machine)さえあればどこででも実行することができます。これは、Microsoft Windows®、Macintosh、Linux®、UNIX®など、ほとんどすべてのオペレーティング・システム上でDerbyを実行できる、ということを意味します。また、Derbyは、J2ME(Java 2 Platform, Micro Edition)、J2SE(Java 2 Platform, Standard Edition)、J2EE(Java 2 Platform, Enterprise Edition)のいずれのJavaプラットフォームでも実行することができます。DerbyソフトウェアはJAR(Java Archive)ファイルとしてバンドルされていて、そのファイルサイズはたったの2 MBです。このようにフットプリントが小さいことから、Derbyデータベースはアプリケーションと容易に共存することができます。

Derbyデータベースには以下の2つの使用法があります。

  • ユーザーがデータベースの存在を意識しない組み込みデータベースとしての使用法。アプリケーションがデータベースを使用し、アプリケーションとデータベースが同一のJVM上で実行され、データベースはローカル・ファイル・システムにデータを保存します。組み込みモデルでは、データベースは同一のJVM上で実行されているアプリケーションのみと通信します。
  • クライアント-サーバー接続での使用法。従来型のモデルで、多くの商用ベンダーが採用しています。このモデルでは、アプリケーションはネットワーク接続を介してデータベースと通信し、アプリケーションとデータベースは異なるJVM上で動作します。データベース・サーバーは複数のクライアント・アプリケーションと通信することができます。

Apache Derbyをダウンロードする

Apache Derbyのシンプルさを享受するのに最良の方法は、とにかく使ってみることです。このセクションの以下の部分では、Apache Derbyのダウンロード方法と、作成したバージョンの検証方法の概要を説明します(個々のオペレーティング・システムに固有の注意事項については、「参考文献」のApache Derby公式Webサイトへのリンクを参照してください)。以降の説明では、適切なJRE(Java Runtime Environment)が正しくインストールされていることを前提にしています。バージョン1.3より後のJREならば問題ありませんが、このシリーズ記事ではJava 1.4.2以降を使用します。

前提条件はさておき、まずはApache Derbyをダウンロードしましょう。図3に示すように、ソース、ライブラリー、バイナリーの3つの異なるバージョンをダウンロードできます。ソース・バージョンはその名のとおり、ソース・コードです。このバージョンを使用するには、ソース・コードをコンパイルして.jarファイルを構築する必要があります。ライブラリー・バージョンには、Derbyデータベースに必要な.jarファイルのみが含まれています。バイナリー・バージョンには.jarファイルとDerbyの資料が含まれています。

簡単に済ますために、バイナリー・バージョンをダウンロードしてください。ダウンロードが済んだら、ファイルの保全性の検証を必ず行ってください。これには、ダウンロードしたものが公式版であることを保証するPGP(Pretty Good Privacy)署名の検証と、ダウンロードしたファイルが壊れていないことを保証するMD5(Message-Digest algorithm 5)署名の検証とが含まれます。

図3. Apache Derbyデータベースのダウンロード
Downloading the Apache Derby database

Apache Derbyをインストールする

ダウンロードしてDerbyデータベース・ファイルを含むアーカイブの保全性が検証できたら、インストールは簡単です(プラットフォームによって多少の違いはあります)。

  1. 適切なインストール先を選択します。WindowsシステムではC:\Apache、UNIXベースのシステムでは/opt/Apacheなどです。
  2. ターミナル・ウィンドウ(Windowsではコマンド・プロンプト)を開き、この新規ディレクトリーに移動し、Derbyデータベースを含むアーカイブを展開します。すると、インストールしたDerbyデータベースのバージョンを名前に持つ新規ディレクトリーが作成されます。たとえば、「db-derby-10.1.2.1-bin」となります。
  3. Derbyの.jarファイルをCLASSPATH環境変数に追加します。コマンド・プロンプトに慣れている人ならば、db-derby-10.1.2.1-bin/libサブディレクトリーにあるderby.jarをCLASSPATH変数に追加することによって、これを直接行うことができます。あるいは、db-derby-10.1.2.1-bin\frameworks\embedded\binサブディレクトリーに提供されているsetEmbeddedCPスクリプトを実行することも可能です。このスクリプトの実行前に、DERBY_INSTALLがDerbyデータベースをインストールしたディレクトリーを指すように、DERBY_INSTALL環境変数を設定するか、スクリプトを修正する必要があります。
  4. リスト1に示すsysinfoツールを使用してインストールを検証します。
リスト1.sysinfoによるDerbyのインストールのテスト
rb$ java org.apache.derby.tools.sysinfo
------------------ Java Information ------------------
Java Version:    1.4.2_09
Java Vendor:     Apple Computer, Inc.
Java home:       /System/Library/Frameworks/JavaVM.framework/
                         Versions/1.4.2/Home
Java 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:.
OS name:         Mac OS X
OS architecture: ppc
OS version:      10.4.3
Java user name:  rb
Java user home:  /Users/rb
Java user dir:   /opt/Apache/db-derby-10.1.2.1-bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.4
--------- Derby Information --------
JRE - JDBC: J2SE 1.4.2 - JDBC 3.0
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - 
   (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar] 10.1.2.1 - (330608)
[/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar] 10.1.2.1 - 
   (330608)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------

これで、単独のネットワーク・サーバーとしても、アプリケーションに組み込むデータベースとしても実行できる実用データベース・システムが手に入りました。次回以降のコラムでは、これら2つのモデルでのDerbyの実行方法を説明し、さらにデータベースを洞察します。

Apache Derbyを使用する

データベース・システムの扱いは難しいとは限りません。Apache Derbyを使用すれば、フル機能のデータベース・システムをすぐに扱い始めることができます。また、Apache Derbyは標準準拠のデータベースなので、それを使用して開発したアプリケーションは、状況が許せばより強力なデータベース・システムに容易に移行することができます。

参考文献

学ぶために

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

  • Apache Derby 10.1.2.1リリースをダウンロードしてください。
  • オープン・ソース開発プロジェクトに新たに着手する際は、IBM trial softwareを参照してください。試用版のソフトウェアをダウンロードまたはDVDで入手できます。

議論するために

コメント

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, Java technology, Information Management
ArticleID=232664
ArticleTitle=Apache Derbyを使用した開発 -3連単を当てる:Apache Derbyの紹介
publish-date=02142006