岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

IBM社のCouchDBセミナーに参加した

昨晩、IBM社主催のセミナー「CouchDB で始める Web 時代のデータベースとの付き合い方 - Time to relax!!」に参加しました。長野への日帰り出張後という強行日程でしたが、MapReduceの概要などがつかめたので、がんばって参加したかいがあったと思います。

セミナーは、CouchDBの概要、RESTful APIの使い方、MapReduceのデモという3部構成でした。資料が後日公開されるそうなので、詳細はそちらでご確認ください。

個人的に興味深かった点を、備忘録を兼ねてメモしておきます。

リビジョン管理の仕組みが面白い

データを登録するとリビジョン番号が振られ、更新時や削除時にはそのリビジョン番号のマッチング処理を行う、という仕組みが面白いと思いました(参考)。

WikiやISO文書管理システムなどとの相性も良いでしょうし、排他制御の必要なシステムでも威力を発揮するのではないでしょうか。

ただ、リビジョン番号が一致しないときに「412 Precondition Failed」が返される実装には、少し違和感を覚えました。リクエストヘッダにリビジョン番号を含めているわけではないのですから、「409 Conflict」のほうがしっくりきます。逆に、412にしたいのならば、衝突の検出にETagなりLast-Modifiedなりを使うのが筋ではないかと思います(ML等ですでに議論されているかもしれません)。

RDBMSを補完する使い方はどうか

スライドに書かれていたかどうか覚えていないのですが、講師の佐々木庸平さんより「CouchDBは、RDBMSを置き換える使い方ではなく、RDBMSを補完する使い方が向いているのでは」というようなお話がありました。

具体的には「memcachedに永続性を与えるような使い方」ということで、これは面白いと思いました。実験してみるのも楽しそうです。

認証・アクセス制御は未実装

セミナーの最後に「認証・アクセス制御の方法が知りたい」という私の質問に答えていただけました。「私も知りたい」とのお答えでした(笑)。

現状のCouchDBでは認証周りは未実装なので、自前で処理するしかありません。佐々木さんは「mod_proxyやLDAPなどで実現できるのでは」とおっしゃっていました。

とりあえず私は、localhostや特定のIPアドレスからの接続だけを許可したいので、iptables等でフィルタリングするのが適当かなと思いました。