目次


Web 時代の非リレーショナルデータベース

第 1 回 Apache CouchDB の概要とインストール

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Web 時代の非リレーショナルデータベース

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Web 時代の非リレーショナルデータベース

このシリーズの続きに乞うご期待。

Web開発者の非リレーショナルデータベースへの注目

Ajax, REST, Lightweight Java, Ruby, Python, オープンソースデータベース等々、近年、Web を取り巻く周辺技術は幅広く、力強く動いています。この流れを積極的に取り入れたシステムでは、多くの場合、Web 空間におけるリソースモデル - (A) - サーバープログラム上のオブジェクトモデル - (B) - ディスク空間上のデータモデルの変換を、何らかの形で検討することになるでしょう(図 1)。ここでは、(A) を MVCのController に近いもの、(B) は ORM とお考え下さい。例えば、Web アプリケーションフレームワークである Ruby on Rails では、(A) は ActionPack(map.resources)、(B) を ActiveRecord が担当します。Java には多くの選択肢が存在します。

図 1. 3 層 Web アプリにおけるデータ変換
3 層 Web アプリにおけるデータ変換
3 層 Web アプリにおけるデータ変換

ディスク上のデータモデルは、多くの場合、リレーショナルデータベース (RDB) です。RDB の有用性はすでに十分証明されており、Web でも以前から広く活用されています。XML への対応も進んできています。

しかしここ数年、図 1 (A) の周辺で、Web を巡る状況は劇的に変わりました。REST が改めて注目され、URI の設計や HTTP Method の選択により注意が払われるようになり、Web 空間内のリソースモデルが変わりつつあります。Ajax の流行はブラウザと Web サーバー間でのデータ交換形式を大きく変え、JSON をサーバーサイドでも容易に、様々な言語で扱えるデータ形式に押し上げました。

このような状況下、ディスク空間上のデータモデルとして、リレーショナルではないデータベースを採用することに、新たなメリットは生まれていないのでしょうか。本シリーズで取り上げる CouchDB は、大きな可能性を秘めていると考えています。

Apache CouchDB とは

では、CouchDB はいったい何なのでしょうか。CouchDB は現在 Apache の incubator project として開発が進められている“ドキュメント指向”データベースで、様々な特徴を持っています。以下に Web 開発者が注目するその一部を紹介します。

  • リレーショナルデータベースではありません。
    • SQL は要りません。
  • データベースとのすべての通信に HTTP を使用し、RESTful API を提供します。
    • 特別なデータベースドライバは必要なく、HTTP Client 機能を使える環境であればどこでも (例えば telnet でも) データベースにアクセスできます。
    • ドキュメントの取得・保存・削除は REST の原則に従います。
  • データ構造にスキーマは不要です。
    • データはすべて JSON フォーマットで表現される“ドキュメント”としてやりとりします。
    • JSON の構造について、事前定義は必要なく、後から属性を追加したり、削除したりするのは自由です。
  • 問い合わせ (ビュー) は MapReduce フレームワークに基づいて記述します。
    • データベースエンジンは Erlang で実装されていますが、問い合わせ言語には標準入出力をサポートしている任意のプログラミング言語を使用することができます (標準は JavaScript です)。
    • 大規模分散並列データベースとしての可能性を秘めています。

CouchDB は Web で使用可能な HTTP データサービスの機能を果たすことができるデータベースです。JSON をベースにした ORM 不要のデータアクセス機能と、MapReduce フレームワークによる大規模展開の可能性を考えると、Web 開発者にとって大いに魅力のあるデータベースに見えないでしょうか。

このシリーズでは、上で言及した CouchDB の特徴について、サンプルコードを交えながら解説を行います。

  • 第 2 回では、RESTful API に焦点を当て、Ruby on Rails を用いて CouchDB をデータベースにする簡単な wiki を作成します。
  • 第 3 回では、問い合わせ機能に注目し、MapReduce フレームワークを用いたクエリの作成方法を覚えます。
  • 第 4 回では、CouchDB が使用する JSON ドキュメントの細部について考察します。
  • 第 5 回では、レプリケーションなどのその他の機能について紹介し、このシリーズを通して説明したことをまとめます。

Ubuntu 8.04 への Apache CouchDB のインストール

このシリーズでは、Ubuntu 8.04 と、Apache CouchDB 0.8.0 の環境を前提に、サンプルプログラムを紹介していきます。まず今回は、Apache CouchDB のインストール方法を説明します。2008年6月26日現在、CouchDB はバージョン 0.8.0 がリリースされています。

前提モジュールのインストール

Apache CouchDB をビルドおよび動作させるために必要な前提モジュールを Ubuntu のパッケージシステムを使ってインストールします。

sudo apt-get install build-essentials
sudo apt-get install libtool
sudo apt-get install automake
sudo apt-get install libmozjs-dev
sudo apt-get install libicu-dev
sudo apt-get install erlang

Apache CouchDB のダウンロードとインストール

Apache CouchDB はソースコードからビルドすることでインストールします。プロジェクトサイトから現在の最新リリースを取得できます。sapache-couchdb-0.8.0-incubating.tar.gz のリンクを経由して、Apache のミラーサイトからファイルをダウンロードします。ダウンロード後、コンソールから以下のようにインストールを行います。

$ tar zxvf apache-couchdb-0.8.0-incubating.tar.gz
$ cd apache-couchdb-0.8.0-incubating
$ ./configure
$ make
$ sudo make install

デフォルトでは /usr/local 以下にインストールされます。インストール先を変更する場合は configure スクリプト実行時に、--prefix オプションで指定してください。この連載では /usr/local 以下にインストールしたことを前提に説明を進めます。

Apache CouchDB の起動

CouchDB を開始する前に、専用のユーザーを作成し、ディレクトリパーミッションを変更します。/usr/local/var/lib/couchdb はデータベースファイルが作成される場所、/usr/local/var/log/couchdb は CouchDB のサーバープロセスのログファイルが出力される場所になります。

$ sudo adduser -group -home /usr/local/var/lib/couchdb -no-create-home couchdb
$ sudo chown couchdb.couchdb /usr/local/var/lib/couchdb /usr/local/var/log/couchdb

また、起動停止の init.d スクリプト が /usr/local/etc/init.d に作成されています。以下のコマンドを使用して CouchDB が起動できます。

$ sudo /usr/local/etc/init.d/couchdb start

デフォルトでは 127.0.0.1:5984 で HTTP サーバーが起動します。ログレベルやバインドする IP アドレスやポートなどを変更したい場合は、/usr/local/etc/couchdb/couch.ini の項目を編集して、再起動します。

起動に成功したら、アクセスできるか確認してみましょう。HTTP でデータベースと通信できますから、curl を使うことができます (curl コマンドが入っていない場合は telnet を使うか、apt-get install curl でインストールしてください)。標準出力に JSON 形式の文字列が表示されることを確認してください。

$ curl http://localhost:5984/
{"couchdb":"Welcome","version":"0.8.0-incubating"}

Web Utility (Futon) の確認

Web ブラウザを使用して、http://localhost:5984/_utils にアクセスすると、Futon と呼ばれる CouchDB の Web 管理ユーティリティが表示されます。Futon を使って、データベースの作成やドキュメントの編集、あるいはクエリ (CouchDB ではデザインドキュメントと呼ばれる特殊なドキュメントです) の登録なども可能です (図 2)。

図 2. Futon Web 管理ユーティリティ
Futon Web 管理ユーティリティ
Futon Web 管理ユーティリティ

まとめと次回予告

今回は、Apache CouchDB の特徴について言及し、その簡単なインストール方法を説明しました。次回は、CouchDB のプログラムからの利用方法を学ぶために、Ruby on Rails (と Ruby の Net::HTTP ライブラリ)を使用して簡単な wiki アプリケーションを作成します。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development, Open source
ArticleID=317254
ArticleTitle=Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール
publish-date=07042008