2012.12.12
ドキュメントデータベースはなぜ使いやすいのか
昨年の6月、「CouchDBとMongoDBの使い分け」というエントリで、CouchDBMongoDBについて書いた。CouchDBとMongoDBは、広く「NoSQL」と総称されている非SQL型データベースのうち、「ドキュメントデータベース」と呼ばれるカテゴリを代表する2つだ。

CouchDBはその後、作者のDamien Katzがプロジェクトから離脱しCouchbase Server(Couchbase社による、CouchDBから分岐したプロジェクト)のほうに専念するといったニュースもあり、やや普及が停滞しているように感じる(プロジェクトは継続している)。いっぽうのMongoDBは、開発元の10genにインテルとレッドハットが出資するなど、ますます存在感を高めており、普及も進んでいるようだ。

Publickeyの新野氏が「NoSQLは流行ではなく発展し続ける」と書いているが、私も同感だ。少なくともドキュメントデータベースについては、かれこれ2~3年ほどCouchDBとMongoDBを使ってきたが、とても使いやすくて、もはや「手放せない」という実感がある。これが一時の流行などではないことは、間違いないと思う。

なぜドキュメントデータベースは、これほど使いやすいのか。スキーマレス(データの型が固定されない)で、ジョインを使わない、といった特徴は、もちろん大きいだろう。それも含めて、何がこの使いやすさを生み出しているかをひとことで言うと、「ファイルに近いから」だと思うのだ。

ドキュメントデータベースの「ドキュメント」は、かなり「ファイル」に近い。より詳しく言えば、構造を持った「JSONファイル」である。JSONファイルは、構造を持ったテキストファイルという意味では「XMLファイル」にも似ている。

つまりドキュメントデータベースは、ファイルシステムにJSONやXMLのファイルが置いてあるだけ、というのにけっこう近いのだ。違うのは主に、インデックスが自動的に更新されて、それを使って条件に合ったものを取り出したりできる点や、データに対する操作の競合などをデータベースが管理している点だ。それらを除けば、ドキュメントデータベースを使うときの感覚は、ファイルシステムにあるJSONやXMLのファイルを扱うのとかなり近い。まさに「ドキュメント(文書)」のデータベースなのだ。ファイル操作とほぼ同じ「メンタル・モデル」で使える、と言ってもいい。

そのうえ、それはただのファイルでなく、構造化されたデータであり、解析の必要がない。それはいわば、プログラムの中で「すぐに使える」状態になっているのだ。

ドキュメントデータベースの普及は、先日の「静的サイト生成という「古くて新しい手法」の復活」という動向とも無関係ではないと思う。いずれも、ここ2~3年で目立ってきたもので、旧来のRDBから離反する動きであり、プログラマにとってより自然かつ柔軟で、シンプルな方法を追求している、という点が共通している。


関連:
InfoQ - Damien Katz氏がApache CouchDBから離反し、Couchbase Server開発を継続(2012/1/11)
http://www.infoq.com/jp/news/2012/01/Katz-CouchDB-Couchbase-Server
Publickey - NoSQLは流行ではなく発展し続ける。MongoDBにインテルとレッドハットが戦略的投資を実行(2012/11/16)
http://www.publickey1.jp/blog/12/nosqlmongodb.html

関連エントリ:
静的サイト生成という「古くて新しい手法」の復活
http://mojix.org/2012/12/07/static-site-generation
CouchDBとMongoDBの使い分け
http://mojix.org/2011/06/15/couchdb-mongodb