「NoSQL」とはリレーショナルデータベースを象徴するSQL言語がない(NoSQL)から誕生した言葉で、非リレーショナルデータベースの総称です。ただし、NoSQLを「もはやSQL要らない」と解釈してしまうと強すぎる印象を与えるという批判もあったことから、最近では「Not Only SQL(SQLだけじゃない)」の略であるという解釈が一般的です。

図1●NoSQLデータベース
[画像のクリックで拡大表示]

 NoSQLの分類に含まれるデータベースとしては、ROMAをはじめとするキー・バリュー型データストア(key-valueストア)や、MongoDBをはじめとするドキュメント指向データベースがあります(図1)。


RDBの限界とNoSQL

 リレーショナルデータベースには、大規模環境、特に高トラフィックWebのバックエンドとしての性能に限界があると考えられるようになってきました。リレーショナルデータベースには、基本的原則としてACID特性というものがありますが、あまりにもデータ量やアクセス頻度が増大すると、性能低下の原因になることが分かってきました。データ量やアクセス頻度に増大に伴って、ACID特性を維持するためのコストが無視できなくなるためです。

 データベースをうまく分割できれば、ある程度問題に対処できます。例えば、「Mixi」をはじめとするソーシャルネットワーキングサービス(SNS)であれば、会員番号が偶数の会員と奇数の会員で別のデータベースに登録するといった「水平分割」のテクニックが有効でしょう。あるいは、SNSを例にすれば、「日記」「コミュニティー」など、機能ごとにデータベースを分割する「垂直分割」もあります。しかしそれでもなお、運用の難しさはつきまといます。

図2●NoSQLの利点
[画像のクリックで拡大表示]

 NoSQLは、このようなリレーショナルデータベースの限界への対策になると考えられています。リレーショナルデータベースと比較すると、NoSQLでは、データアクセスのパターンを制限することで高速な検索を可能にしています(図2)。また、多くのNoSQLデータベースではキーをごとにデータベースを分割するなど、自動的な水平分割が可能になっています。

 さらに、一貫性を緩和している点も特徴です。ほとんどのNoSQLデータベースは、「BASE」という考え方を取り込んでいます。これは、「Basically Available」「Soft-state」「Eventually consistent」の略です。不整合が発生することは滅多にないので、可用性を重視して(Basically Available)、状態の厳密性は追求せず(Soft-state)、途中はともかく最終的に一貫性のつじつまがあえばよい(Eventually consistent)、というアプローチです。

 BASEの考え方に従えば、一貫性を維持するためのコストを抑えられます。これはリレーショナルデータベースには、なかなかできない決断です。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら