「NoSQL」とは、リレーショナルデータベース管理システム (RDBMS)とは異なる考え方を持つ、データベースを指す大まかな概念です。RDBMSの代表格であるSQLに「NO(Not Only)」をつけて、「RDBMSをやみくもに利用するのではなく、その他のデータベースの開発や利用を促進する」という意味合いも込められています。
RDBMSとNoSQLの何が異なるかというと、データの持ち方が異なります。RDBMSは列×行の表形式でデータを持ちますが、NoSQLにはさまざまなタイプがあります。もっとも代表的でシンプルなものは、「キー:値」形式のものです。この場合、ある「キー」に対して「バリュー」が紐づけられています。キーを渡すと値が返ることで、値を管理しています。NoSQL系データベース管理システムの中には、機能を最小限でシンプルにすることで、データ処理の高速化を図っているものもあります。
NoSQLの強みはシンプルさと処理速度、柔軟性
最近は米GoogleのさまざまなサービスやAmazon.comのような大規模なWebサイト、Facebook、mixiなどのソーシャルメディアでNoSQLが使用されています。NoSQLは高速処理が得意で、RDBMSに比べて大量のデータを扱うことが可能だからです。
また、複数のサーバでひとつのデータベースを管理する「分散データベース」として設計、実装されていることが多くあります。そのため、高価なサーバを購入しなくても、安価なサーバを数多く並べて並列処理をすることで、処理性能の向上を図ることも可能です。
また、NoSQLの特徴として「スキーマレス」があります。NoSQLのひとつ、MongoDBは、ドキュメント指向のデータベースシステムです。MongoDBの特徴のひとつは、あらかじめデータの形式を決めておかなくても、自由にデータを操作できることです。MongoDBでは、データを非定型のデータ構造の集合体として管理します。このデータの集合をドキュメントと呼び、ドキュメントの集合をコレクションとして管理しています。大量に多種類のデータを扱うSNSのようなシステムでは、スキーマの柔軟性に欠けるRDBMSよりも、NoSQLのほうが扱いやすいといわれることがあります。
RDBMSもNoSQLも一長一短あり
ただし、NoSQLにも弱点はあります。先に例として出したMongoDBは、パフォーマンスに優れている反面、データ保管の安全性については、「原因不明なデータ消失が多い」と疑問視する声も上がっています。
RDBMSもNoSQLも一長一短あり、どちらがより優れているという議論や、どちらか一方のみを利用すべきという判断は今のところあまり意味がないでしょう。データベースに要求される仕様ごとに、RDBMSとNoSQLの長所・短所を検討し、どちらを採用するか決定すべきです。