NoSQLデータベースはその出自から「目的特化型のデータストア」という性格が強く、製品ごとに得意分野が異なります。つまり、すべてのNoSQLデータベースを同列に扱うことはできません。ただし「RDBMSと比較して」という視点から見れば、NoSQLデータベースは以下のような特長を持っているといえます。
最大の特長としては、RDBMSと比べて単純な読み書きの性能が高いという点が挙げられます。しかし、先に説明したように、NoSQLはRDBMSでは当たり前のことを一部あきらめて性能を向上させています。性能向上の引き替えに、次のような欠点を抱えています。
まず、一般にデータ構造がシンプルであるということ。リレーションもなく、読み取り時の結合はできません。また、データ検索時は、SQLほど柔軟に条件を指定することはできません。ほかにも、データの集計、並べ替えができない(あるいは機能が限定されている)とか、厳密なデータ一貫性を保つ仕組み(ACIDトランザクション)がないというところも欠点として挙げられます。
本稿の冒頭で、NoSQLデータベースには分散KVS、列指向データベース、ドキュメント指向データベースなどの種類があると説明しました。ここでは簡単に、それぞれがどんなものかということを簡単に説明しましょう。
分散KVSは、データをkey(キー)とvalue(値)のペアにして管理するデータベースです(図3)。データ構造は、プログラミング言語で使用する「連想配列」や「Map(あるいはDictionary)」と呼ばれるものに近いと言えます。高速な読み書きが可能ですが、複雑な検索処理には向きません。代表的なソフトウェアとしては、オープンソースソフトウェアの「memcached」が挙げられます。
列指向データベースは、データを列単位でひとまとめにして管理するデータベースです(図4)。RDBMSでは行単位にデータをまとめて管理していますが、列単位で管理することでRDBMSでは高性能を期待できない場面でも高速な読み書きが可能になっています。ただし、RDBMSの方が速い場面も多くあります。代表的なソフトウェアとしては、Googleのデータ基盤である「BigTable」や、オープンソースソフトウェアの「Apache Cassandra」などが挙げられます。
ドキュメント指向データベースは、特定のスキーマを持たないデータベースです(図5)。RDBMSでは、最初にデータを格納するテーブルを作り、そのテーブルの構造に合わせてデータを格納していきます。一方、ドキュメント指向データベースは、1件1件のデータをドキュメント、つまり文書のように格納するので、データを格納する際に、特定の構造に合わせる必要がありません。構造が複雑なオブジェクトをそのまま保存しやすく、スケーラビリティが高いという特長もあります。具体的なソフトウェアとしては、オープンソースソフトウェアの「Apache CouchDB」や「MongoDB」などが挙げられます。
次回はRDBMSとNoSQLデータベースにおけるデータ構造(テーブル設計)の考え方の違いや、データ検索に焦点をあてて解説していく予定です。お楽しみに。
株式会社システムインテグレータ
渡辺俊史
製品企画本部 製品開発グループ
Copyright © ITmedia, Inc. All Rights Reserved.