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

ドキュメント指向データベースの概要リレーショナルデータベースでは、データを表形式で保存します。そのため、表にしやすいデータであれば、効率よく管理することができます。しかし、世の中全てのデータを表にできるかと言えば、そうではありません。そのようなデータをリレーショナルデータベースで管理しようとすると、

藤本 壱

2010年10月15日 20:00

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

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

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

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

ドキュメント指向データベースでは、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はあまり向いていないと言えるでしょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30