Azure Managed Service Column <Azure運用コラム>

リレーショナルデータベースとNoSQLデータベースの違い

Category: 入門編

2020.10.30

はじめに

ビッグデータやSNSなどの膨大な量のデータを扱う際に利用されるリレーショナルデータベースですが、近年ではNoSQLデータベースを活用する動きも多くなってきました。

そこでこの記事では、リレーショナルデータベースとNoSQLデータベースの違いについて解説していきます。

リレーショナルデータベースとは

リレーショナルデータベースとは?
リレーショナルデータベースとは?

リレーショナルデータベースは複雑なデータの関連性を扱えるようにしているデータベースです。表と表との間の関係を定義することでデータを管理し、さまざまな規模のシステムで使われています。OracleやMySQLなどがリレーショナルデータベースに該当します。

リレーショナルデータベースでは、データ(レコード)を表(テーブル)に格納します。このデータの関連性をリレーションシップと呼び、複数のテーブルに分割された情報が、どう関連しあっているかを設定していきます。

複数のテーブルにデータを格納し、次に説明する主キーや正規化といった考え方を用いてデータに関係性を持たせて管理します。

主キー(プライマリーキー)

各テーブルのレコードを一意に識別するために使われるのが主キーです。そのため主キーはテーブルの中で重複してはいけません。
主キーは、リレーショナルデータベースにおいて別テーブルとデータを関連付ける際に利用します。

正規化

リレーショナルデータベースを利用する際のもう一つの考え方が正規化されたデータです。
正規化はデータの冗長性を排除し、レコードに変更があった際に可能な限り更新するレコードの数を減らそうとする考え方です
。更新するレコード数が増えれば見落としや更新間違いが増えます。それを極力なくし、メンテナンス性を上げることが目的です。
たとえば、前述のキーを用い、レコード内に特定のデータが繰り返しある場合や複数のデータがある場合に、別のレコードに分離したりします。

NoSQLデータベースとは

広い意味ではリレーショナルデータベース以外のデータベースを全てNoSQLデータベースと呼びます。SQLに限定されず、さまざまな言語やインターフェースを使います。リレーショナルデータベースでは実現しづらい、大量データの高速処理など最新のアプリケーションを構築するための柔軟なスキーマを兼ね備えているのが特徴です。開発性、機能性、パフォーマンスなどシステムに欲しいものを容易に実現でき、比較的大規模なシステムで使われることが多くなっています

NoSQLは主に3つのタイプに分かれます。

キーバリュー型

NoSQL キーバリュー型
NoSQL キーバリュー型

キーとバリューの組み合わせで作られるシンプルなデータモデルが基本です。バリューとキーは一対一で管理され、新しいバリューが増えるとキーが割り振られ、データが増えていきます。単純な構造なので分割しやすく、キー管理するサーバがキーの位置を把握していれば、メンテナンスも可能です。

カラム指向型

NoSQL カラム指向型
NoSQL カラム指向型

キーバリュー型がキーとバリューが一対一なのに対し、カラム指向型は表の列(もしくは行)方向にデータをまとめて扱います。データをまとめる単位ごとにキー(row key)を設けることができ、複数のカラムを持つことができます。キーバリューがグループ化されているような形です。row keyごとのカラム数を動的に増やすことができる上に、全てのカラムにバリューが入っていないことも許容するので、柔軟に利用することができます。

ドキュメント型

NoSQL ドキュメント型
NoSQL ドキュメント型

JSONやXMLなどのデータ形式で記述されたドキュメント形式でデータを管理する方法です。ドキュメントに階層構造を持たせずに管理できるので、ユニークなIDでアクセスできるのが特徴です。

リレーショナルデータベースとNoSQLデータベースの違い

それぞれのデータベースの違いをCAP定理に基づいて説明します。CAP定理とは、Consistency(一貫性)、Availability(可用性)、Partition-tolerance(ネットワーク分断性)の3つの要素からなり、ノード間でデータを複製した場合、この3要素を同時に保証することはできないと言われている考え方です。

保証されない一要素も優先度が落ちているだけなので、別の技術やサーバ構成など他の手段をもってある程度は担保できるようになっているのが通常です

リレーショナルデータベースの場合

リレーショナルデータベースの場合、C(一貫性)とA(可用性)が保証されます。P(ネットワーク分断耐性)がないために、ネットワーク上に分散したシステム全体で一つのデータベースを構成するには向いていません。

ネットワーク遅延や切断があると、データが保証されなくなってしまう形です。トランザクションを張ってから更新するのが一般的なため、何らかの分断があった場合、元に戻すことはできますが、データは更新されません。基本的にリレーショナルデータベースは単一のデータベースサーバとして運用されることが想定されています。

NoSQLデータベースの場合

NoSQLデータベースの場合、データベース管理システムによって異なりますが、多くの形がP(ネットワーク分断耐性)を重視します。そのためCAP定理の組み合わせとしてはCとP(一貫性と分断耐性)またはAとP(可用性と分断耐性)を重視するものに分かれます。一部リレーショナルデータベース同様にCとAを重視するものもあります。

CとPを重視する形では、分散したデータベースを利用しつつも整合性が保持されます。分散している状態にもかかわらず、一貫性を保とうとするので、データの複製中はデータを使うことができません。データが使えないタイミングが発生することを想定したプログラムを組む必要がりあります。

AとPを重視する形では、データはいつでもアクセス可能な状態となり、単一障害点を発生させません。ただし、通信エラーやノードの故障によって、ノード間の一貫性が失われるケースが発生してしまいます。それを想定したサービスや、不整合を起こしたままでも処理を進めていくような設計方式が求められます。

おわりに

データベースといえばリレーショナルデータベースを一番に持ってくるシステムが多かったですが、リレーショナルデータベースの課題を解消したNoSQLが台頭してきています。NoSQLは種類が多く、データベース管理システムによって性質も異なるので、検討時に最適なものを見つけておくことも重要です。

どのデータベースを使うのが最適なのかは、そのシステムが何を重視するのかによって変わります。NoSQLも実績が増えており、使用例もたくさん公開されています。迷ったら開発例も参考にしながらどれを利用するかを選びましょう。

Tag: DB NoSQLデータベース リレーショナルデータベース

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php