データベースで最も主流なのは、RDBMS(リレーショナル型データベース)です。しかし、昨今では非リレーショナル型である、NoSQLが利用される動きも出てきています。
「NoSQLってなに?」
「NoSQLってなにがいいの?」
「NoSQLとRDBMSの違いは?」
本記事ではこのような疑問にお応えします。NoSQLの特徴およびRDBMSとの違いを分かりやすく解説するので、ぜひ参考にしてください。
NoSQLとは
NoSQLは、RDBMS以外のデータベース管理システムを表します。そのため、RDBMS以外であればすべてのデータベースが当てはまり、範囲が非常に広いです。
通常RDBMSは、データの関係を行や列といった表形式で表してデータを格納しますが、NoSQLはそのような表形式ではなく、さまざまな形式でデータを格納します。
ちなみに、NoSQLは「Not Only SQL」を略したものであり「NO SQL」ではありません。データを操作するのにSQLを使用しない、という意味ではなくSQL以外にも方法がある、という意味になります。
NoSQLとRDBMSとの違い
NoSQLは、RDBMSでは対応が難しい部分を改善するために誕生した経緯があります。そのため、NoSQLとRDBMSは大きく異なります。ここでは、それぞれのメリット・デメリットから、その違いを見ていきましょう。
RDBMSのメリット・デメリット
RDBMSは「リレーショナル型データベース」と呼ばれ、世界で最も使われているデータベースです。データを表形式のテーブルに格納して管理し、複数のテーブルを用いて複雑なデータも管理できることから、大企業から中小企業まで、幅広く利用されています。
RDBMS のメリットは「データの一貫性が保証されている」「SQLにより複雑な操作が可能」「正規化することで処理のコストを抑えられる」の3点が挙げられます。
RDBMSは「ACID特性」に基づいて設計されており、データの一貫性が保証されています。これは、正常に処理された場合その結果を表示し、正しく処理されなかった場合は処理される前の状態が表示されることが保証されている、というものです。
また、正規化により多くのデータを複数のテーブルでデータを管理し、追加や削除などの処理コストを抑えられます。それらのデータはSQLというプログラミング言語によって操作し、テーブル同士を結合して検索するなど、複雑な操作が可能です。
RDB のデメリットは、「分散管理時にデータの書き込みが分散できない」「データが大規模になると処理速度が落ちる」点が上げられます。
複数のサーバーに分散させてデータを管理した場合、読取りは複数のサーバーで同時に読取りできますが、書込み時は一貫性を保つためにデータの整合性をあわせる必要があり、分散しての並列処理ができません。
そのため、同一データに対して一斉に更新処理がかかった場合、処理速度が落ちるというデメリットがあります。
NoSQLのメリット・デメリット
ビックデータやクラウドなど大容量データを扱う場合、RDBMSでは処理速度の低下が課題となってきました。NoSQLは、RDBMSのデメリットを解決する機能が備わっています。
NoSQLのメリットとして、まず挙げられるのが、処理速度が速さです。NoSQLは、データの一貫性を保証しません。そのため、大容量データでも高速に処理できます。また、NoSQLはサーバーの台数を増やし水平分散によるスケールアップが可能なことから、拡張性においても優れています。
NoSQLのデメリットは、データの一貫性が保証されていないため、データの更新や削除処理が頻繁に発生すると、データの整合性が保証されない場合があります。
また、NoSQLはSQLを使用しないため、複雑な検索はできません。単純なデータを高速で登録および読み取りは得意ですが、複雑な処理は不向きです。
以上のことから、RDBMSとNoSQLの違いをシンプルに表すと、以下の通りです。
・RDBMS
データの一貫性やSQLにより、更新処理や複雑な検索処理が可能
・NoSQL
データの整合性を犠牲に、拡張性と分散処理に優れ、大容量データの高速処理が可能
NoSQLの種類
NoSQLは、いくつかの種類が存在します。ここでは、代表的な「キーバリュー型」「列指向型(カラム指向型)」「グラフ型」「ドキュメント型」を紹介します。
キーバリュー型
キーバリュー型は「キー」「バリュー」2つの要素を組み合わせたシンプルなデータモデルです。キーとバリューは1対1で管理されており、単純な格納と抽出のみの構造です。
構造上、キーバリューは結合処理ができません。そのため、複雑な検索処理には不向きです。
代表的なキーバリュー型のデータベースとして、Redisやmemcachedがあります。
列指向型(カラム指向型)
カラム指向型は、キーバリュー型に「列(カラム)」の概念を追加したデータモデルです。行に付与されたキーが複数のカラムを保持し、必要に応じてカラムを追加することも可能です。
RDBMSではレコード(行)を一塊のデータとして扱いますが、カラム指向型では列方向にデータを扱います。そのため、特定の列に対しての処理に優れています。逆に、行単位でデータを検索、更新する処理は不向きです。
代表的なカラム指向型のデータベースとして、CassandraやHBaseがあります。
グラフ型
グラフ型とは、グラフ構造を備えたデータベースです。グラフは「ノード」、「エッジ」、「プロパティ」という3つの要素で構成されています。
ノード間の関係を管理しており、RDBMSでも時間がかかる複雑な結合を伴う処理でも、グラフ型データベースだと高速に処理できます。
代表的なグラフ型データベースとして、Neo4jやInfiniteGraphなどがあります。
ドキュメント型
「JSON」「XML」といったドキュメントでデータを管理します。ドキュメント毎に異なるデータ構造を持つことができるため、不定形なデータでも柔軟に対応できます。
ドキュメントを埋め込めるため、1レコード内に複雑な階層関係を含められます。そのため、キーバリュー型よりも複雑なクエリが可能です。ただし、結合には制約があります。
代表的なドキュメント型データベースとして、MongoDBやCouchDB、BaseXがあげられます。
NoSQLの製品
ここからは、DBMSの中でも主要な4つのソフトウェアをご紹介します。
MongoDB
MongoDBは、NoSQLの中で最も人気の高いデータベースで、JSON形式でデータを格納するドキュメント型データベースです。
昨今WebAPIでデータを取得する場合はJSONを扱うケースが多いため、MongoDBはWebアプリケーションと非常に相性がよいです。主にWebサイトの操作ログの蓄積や、ソーシャルゲームのような負荷の低い読取り、更新が大量に発生するシステムなどで利用されます。
Apache Cassandra
Apache Cassandraは、カラム指向型のデータベースです。分散処理に対応しており、ノードを追加することでスケールアップも可能です。また、単一障害店をもたないアーキテクチャで耐障害性が非常に高いことから、人気が高いデータベースです。
大手企業でも利用実績があり、Apple社では1000以上のノードで100ペタバイトのデータを、Netflixでも100以上のノードで6ペタバイト以上のデータを扱うといった事例があります。
まとめ
本記事では、NoSQLデータベースについて解説しました。RDBMSとは異なり、以下のような特徴があります。
メリット:
● 大容量データでも高速に処理できる。
● はサーバーの台数を増やし水平分散によるスケールアップが可能
デメリット:
● データの一貫性が保証されておらず、データの整合性が保証されない
● 単純なデータを高速で登録および読み取りは得意ですが、複雑な検索は不向きです。
NoSQLは、Webアプリケーションや非構造化データや大容量データを格納し処理するのに優れたデータベースです。RDBMSとの違いを理解し、適材適所で利用しましょう。
- カテゴリ:
- 【DB入門】データベース概論
- キーワード:
- データベース