ドキュメント指向データベース

先日の日記(S3ネイティブなデータベースエンジン - Webプログラミング日記)でThrudbについて書いたが、あのようなSQLを使わないデータベースのことをドキュメント指向データベース(Document Oriented Database)と呼ぶらしい。

少し調べるとCouchDbというプロジェクトが流行の源になっていて、同様のエンジンが複数出ているようだ。
それぞれの特徴は、

CouchDb (http://couchdb.org/)

javascript形式でクエリをpost。HTTPで操作するので、様々なクライアントから利用可能。内部的にはErlangによって実装されている。最新のバージョンではLuceneによる検索機能を付加。よくできたWebインターフェースが最初から付属しているので遊んでいて楽しい。

RDDB (http://rddb.rubyforge.org/)

Rubyによる実装(クライアントライブラリだけでなく、エンジンもRubyで実装されている)。

Thrudb (http://thrudb.googlecode.com/)

Cによる実装(cLuceneによる検索機能、Spreadのメッセージ通知機能を使ったマルチマスタレプリケーション)。Thriftを使うことで多種クライアント(ruby, php, perl)をサポート。

上記3種のエンジンはどれもストレージとしてAmazon S3に対応している。

少しずつ、いじりながら勉強を始めているのだが、例えばタグを実現しようとすると、従来のリレーショナルデータベースを使った場合JOIN命令を使ってテーブルをつなぐ形で実装することが多かったと思う。それに対してドキュメント指向データベースでは、タグをテキストとしてえいやと書いていけるらしい。