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

2010年10月15日(金)
藤本 壱

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

リレーショナルデータベースでは、データを表形式で保存します。そのため、表にしやすいデータであれば、効率よく管理することができます。

しかし、世の中全てのデータを表にできるかと言えば、そうではありません。そのようなデータをリレーショナルデータベースで管理しようとすると、どうしても無理が生じてしまいます。その結果、プログラムを組むのが難しくなったり、処理に時間がかかるようになったりしてしまいます。

このような中で、柔軟な構造でデータを扱えるようなデータベースとして、「ドキュメント指向データベース」と呼ばれるデータベースが出てきました。

ドキュメント指向データベースでは、1件分のデータを「ドキュメント」と呼びます。また、個々のドキュメントのデータ構造は自由で、データを追加する都度変えることができます(図1)。リレーショナルデータベースとは違って、事前にテーブルの構造を決めておく必要がありません。このことを「スキーマレス」(Schemaless)と呼びます。

現在ではオブジェクト指向プログラミングが一般的で、オブジェクトをデータベースに保存する場面も多いです。リレーショナルデータベースに複雑なオブジェクトを保存するには、ORM(Object Relational Mapping)等の手法を使う必要があり、プログラミングが複雑になりがちです。一方、ドキュメント指向データベースなら、オブジェクトをそのまま保存しやすいというメリットがあります。

また、ドキュメント指向データベースでは、スケーラビリティを重視した製品が多いです。大量のデータを扱うシステムを作る際に、リレーショナルデータベースと比べて、比較的簡単にスケールできるような仕組みを持っていることが一般的です。

特に、「Sharding」という仕組みに対応していることが多いです。Shardingでは、多数のコンピュータをネットワークで接続し、それらの間で情報を特に共有しないで分散処理を行う仕組みで、サーバーを増やすだけで性能を上げやすいのです。

図1:ドキュメント指向データベースでは、さまざまなデータ構造のドキュメントを混在して保存することができる

MongoDBの基本

ドキュメント指向データベースの中で、特に注目されている製品として「CouchDB」と「MongoDB」があります。本稿では、そのうちのMongoDBを取り上げることにします。MongoDBは、アメリカの10gen社によって開発されているドキュメント指向データベースです。

C++言語で開発されていて、Windows/MacOS X/Linux/Solarisに対応したプログラムが配布されています。また、Perl/PHP/Ruby/Pythonなど、多くの言語に対応したライブラリも配布されています。

MongoDBの特徴の1つは、ドキュメントを「BSON」というバイナリ形式の内部データで保存することです。BSONは、JavaScriptの「JSON」(JavaScript Object Notation)を元にした書き方で、キーと値の組み合わせでドキュメントの構造を作っていくようになっています。

キーバリュー型のデータベースと比べると、複雑なデータ操作を行うこともできます。例えば、条件を指定してデータを検索するようなことも可能です。そのため、リレーショナルデータベースに慣れた方にも、比較的とっつきやすいNoSQLデータベースだと言えます。

もう1つの特徴として、Shardingに対応していることがあげられます。MongoDBのサーバーを複数台用意して、比較的簡単にデータベースを分散させることができ、スケーラビリティが必要なWebサービス等に使うことが考えられます。

ただし、リレーショナルデータベースとは違って、結合に相当するような機能はありません。したがって、結合を多用するような複雑なデータ処理には、MongoDBはあまり向いていないと言えるでしょう。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています