IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Web development | Open source  >

Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません


レベル: 初級

佐々木 庸平 (ysasaki2@jp.ibm.com), IT スペシャリスト, 日本アイ・ビー・エム システムズ・エンジニアリング株式会社 テクノロジーイノベーション
小出 理史 (mkoide@jp.ibm.com), IT スペシャリスト, 日本アイ・ビー・エム システムズ・エンジニアリング株式会社 テクノロジーイノベーション

2008年 7月 04日

RESTful API によるデータベースアクセス、MapReduce フレームワークによるクエリ、関数型言語 Erlang による実装、といった今話題の最新技術を取り入れた Apache CouchDB(*1) という非リレーショナルデータベースが注目されています。今回は 5 回シリーズの第 1 回として、CouchDB とはいったい何なのかを紹介します。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 アプリにおけるデータ変換

ディスク上のデータモデルは、多くの場合、リレーショナルデータベース (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 管理ユーティリティ




上に戻る


まとめと次回予告

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



参考文献



著者について

佐々木 庸平
2004 年 日本 IBM システムズ・エンジニアリング(株)入社。システム管理製品の技術支援を経て、2006 年より Web を中心とした先進技術発掘、および実プロジェクトへの技術支援の活動に従事。


小出 理史
2002年日本アイ・ビー・エム システムズ・エンジニアリング(株)入社。グリッド・コンピューティング、RESTなどを担当。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ