- 更新日: 2017年03月14日
- 公開日: 2016年07月25日
NoSQLとは?リレーショナルデータベース(RDB)との違いを徹底比較
NoSQLという言葉をご存知でしょうか? ビッグデータ、IoT、SNSなどの流行とともに、データベースの世界でもリレーショナルデータベース(RDB)に代わるこの概念が普及しつつあります。NoSQLは変化する時代に柔軟に対応するデータベースといえるかもしれません。
そうはいってもデータベースは難しい!…と感じるかもしれない皆さんに、RDBMSとNoSQLの違いをとても簡単に解説します。
NoSQLという言葉をご存知でしょうか?ビッグデータ、IoT、SNSなどの流行とともに、データベースの世界でもリレーショナルデータベース(RDB)に代わるこの概念が普及しつつあります。NoSQLは変化する時代に柔軟に対応するデータベースといえるかもしれません。
そうはいってもデータベースは難しい!…と感じるかもしれない皆さんに、RDBMSとNoSQLの違いをとても簡単に解説します。
リレーショナルデータベース(RDB)とは
長く業界を牽引しているデータベース方式です。
・データは2次元の表形式(テーブル)で格納される
・複数の表を結合して利用できる
というデータ構造を特徴とします。データベース設計の際には、データ定義や関係性の整理といったスキーマ定義を厳密に行い、複雑なデータ構造を可能にします。
RDBを管理するソフトウェアのことをリレーショナルデータベース管理システム(RDBMS)といいます。RDBMSを通して、SQLなど問い合わせ言語を利用してデータの選択・追加・更新・削除を行います。
代表的なRDBMS
Oracle, MySQL, Microsoft SQL Server, PostgreSQLなど
※RDBおよびRDBMSについてもっと知りたい方はこちらもご参照ください。
ゼロから始めるPHP講座Vol20 リレーショナルデータベースとRDBMS
NoSQLが誕生した背景
昨今Webサービスやシステムで扱うデータ量が増加しています。サービスには速いレスポンスが求められ、さらにデータ自体も構造化されたデータとは限らず、多様な時代になりました。
RDBMSでは、処理能力を向上させるためにハードウェアの補強(スケールアップ)を行うには限界があり、サーバーを増やす(スケールアウト)には高コストとなります。さらにRDBMS特有の厳密なスキーマ定義は、データの一貫性を保つには必要であるものの変更にはコストがかかるデメリットがあり、多様化するデータにも対応が難しくなりつつある状況でした。
NoSQLが提唱されたのは、それまで大きな問題とはならなかったRDBMSのコスト面、機能面での不足が見え始めた頃です。
NoSQLとは
広義にはRDBMS以外のDBMSの総称です。事前にスキーマ定義が必要で変更にコストがかかるRDBMSに対し、非定型な構造を持つデータを柔軟に管理することができます。NoSQLのNoは”Notonly”の略で、SQLに”限定されない”言語やインターフェースを用います。
主に4つのタイプがあります。
キー・バリュー型
別名:キーバリューストア(KVS)
キーとバリュー(値)の組み合わせという非常に単純な構造でデータが格納されます。バリューにはバイナリデータや、リスト化されたデータを格納します。
代表的なNoSQL
Redis, Riak, Hibariなど
カラムストア型
別名:ワイドカラムストア型、カラム指向型、列指向型
列方向のデータのまとまりをファイルシステム上の連続した位置に格納し、効率的に利用できるデータベースです。
代表的なNoSQL
Cassandra、HBase、BigTable
ドキュメント型
キーに対し、XMLやJSONといった、データ構造を柔軟に変更できるドキュメントデータを格納します。
代表的なNoSQL
MongoDB、Couchbase
グラフ型
グラフ理論に基づいて、「ノード」「リレーション」「プロパティ」の3要素によってノード間の関係性を表現します。上記3タイプとは異なり関係性を持ちますが、RDBMSとは異なる表現であるためにNoSQLとして分類されています。
代表的なNoSQL
Neo4j
RDBMSとNoSQLの違い
RDBMSとNoSQLそれぞれの特徴を踏まえ、違いを見ていきましょう。
データの構造と参照
RDBMS
複数の表と関係性を持ち、厳密なスキーマ定義を事前に行うことで複雑なデータ構造を実現しています。SQLなどのデータベース言語を用いて、複数の表から関係のあるデータを参照するなど高度な条件でのデータを閲覧可能です。
NoSQL
(グラフ型以外)データ型の定義、他のデータとの関係性がありません。単純な構造である分柔軟性が高いとも言えますが、関係性がないので複雑な参照には不向きです。
トランザクション
RDBMS
ACID(※)が実装されており、データの不整合が起こらない仕組みになっています。処理は”トランザクション”という単位で行われ、トランザクション中の全ての処理が正常に行わればトランザクション完了、処理の途中で何らかのエラーが起こればトランザクション前の状態に戻ります。このトランザクション中の処理は外部から閲覧できず、処理前か処理後の状態が閲覧できます。
参照や追加処理だけでなく更新や削除処理も頻繁に行われる場合、トランザクション処理の実装は大きな利点となります。
※ACID
原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、耐久性(Durability)の頭文字を取ったもの。
NoSQL
一定の時間が経過した後結果的に一貫性が保証される結果整合性(Eventual Consistency)という考え方に基づいています。即座にデータの変更が反映されるとは限りません。
制限はあるものの、一部トランザクションを実装しているNoSQLもあります。
処理速度
RDBMS
システムの特性や規模にもよりますが、強固なトランザクション処理を行うため、それほど速くはないというのが通説です。
NoSQL
大量のデータを扱うサービスで参照や追加処理が主な処理である場合、高速となります。データ構造の特性上、更新や削除処理にはそもそも向きません。
分散アーキテクチャ(分散データベース)
分散アーキテクチャ(分散データベース)とは、複数の場所にデータベースを分散して配置する方式です。(例:部署や事業所ごとにデータベースサーバーを配置する)
この分散アーキテクチャには処理速度向上を図るとともに、トラブルや災害時の影響を軽減する目的があります。分散データベースの形態は、垂直分散型と水平分散型に大別することができます。このうち水平分散型は、処理の前後関係や主従関係などがない対等なシステム間で処理を分散する形態です。
RDBMS
主要なRDBMS製品では、レプリケーションというデータベースのコピーを持つ機能があります。トラブルや災害対策として大きな意味を持つ反面、運用上のコストや負荷が増加します。
NoSQL
結果整合性を持つため、水平分散が可能。データ量が増えても比較的簡単に設備を増強できます。
\Webサイト担当者としてのスキルが身に付く/
おわりに
以上簡単にご紹介しましたが、概要はつかめたでしょうか?まだまだ進化を続けるデータベース分野、今後の動向にも注目しましょう。
- この記事を書いた人
- murase miho