NoSQLとは?その特徴や利用するメリット、活用事例を解説

 2020.12.25  株式会社システムインテグレータ

「NoSQLってどんなもの?」
「NoSQLと従来のデータベースは何が違うの?」

このような疑問に応えるべく、NoSQLの概要から従来のデータベースとの違いやNoSQLのメリット、具体的な使われ方の例などを解説していきます。

NoSQLとは

NoSQLは非リレーショナルなデータベースを表す言葉で、「データベースの分類」を表します。

従来のデータベースはリレーショナルデータベース(RDB)と呼ばれるものであり、データを表形式で管理するデータベースです。イメージとしては、Excelのようにデータを管理できるものと考えるとよいでしょう。

NoSQLはそのリレーショナルなデータベースではないのです。厳密には「このようなものがNoSQL」と表せるものではなく、「RDBではないものがNoSQL」です。RDBにはOracleやMySQLなどの代表的なデータベースが存在しますが、それらのRDB以外のデータベースを分類する言葉がNoSQLです。なお、NoSQLは「SQLを使わない(No)」という意味ではなく、「SQLだけでない(Not Only)」を意味している点には注意が必要です。

他のデータベースとの違い、メリット

ここまででなんとなくNoSQLについて掴めたと思いますが、そもそも従来のデータベース(RDB)と異なる新たなデータベース(NoSQL)が必要とされる理由や違いは何でしょうか。ここでは、RDBとの違いやNoSQLを使うメリットについて見ていきましょう。

高速な処理

NoSQLが必要とされる理由の一つとして、RDBの低速な処理が挙げられます。データベースは大量のデータを保存する箱と捉えられますが、RDBはデータ量が増えすぎる(肥大化)と性能が劣化してしまうデメリットがあります。

近年では、IoTの普及などによってビッグデータを取り扱う機会が多くなっていますが、RDBでは処理性能に不安があるケースも散見されます。
そこで、NoSQLではシンプルな作りにすることで高速な処理を実現しています。たとえば、RDBではテーブル間の整合性を保つためにトランザクションを行なっていますが、NoSQLではトランザクションが存在しません。

RDBと比べて高速な処理を実現できる点は、NoSQLのメリットの一つです。

システムの拡張・分散性

NoSQLが必要とされるもう一つの理由としては、システムの拡張・分散性が挙げられるでしょう。RDBのシステムは、原則として1台のサーバーで動作するように設計されています。しかし、近年のデータ量の増加に伴い、1台のサーバーだけでは処理性能が足りなくなってしまうことも。

先程の「高速な処理」にも通ずるところですが、処理能力を向上させるために対応するサーバーの数を増やすスケールアウトができれば問題は解決します。NoSQLではそのスケールアウトに対応しやすく、システムの拡張・分散性が高い点がメリットです。

NoSQLのデータモデル

NoSQLはRDBのようにテーブル構造に固定することなく、さまざまな形式のデータをそのまま格納できます。NoSQLで利用できるデータモデルの例として、以下にいくつか挙げます。

・キーバリュー型:キーとバリューのみのシンプルな組み合わせのモデル
・カラム志向型:キーバリュー型にカラムの概念をもたせたモデル
・ドキュメント型:JSONやXML形式で記述されたドキュメントの形で管理するモデル
・グラフ型:データとデータ間のつながりを管理するモデル

RDBで利用できるデータモデルはテーブル構造に固定されていましたが、NoSQLではさまざまなデータモデルが利用できる点が特徴です。

NoSQLの活用例

ここまで読み進めた方のなかには、「RDBとの違いはわかったけど、NoSQLは実際にどんな使われ方をしているの?」という疑問を持つ方も多いのではないでしょうか。

1.追加処理やデータ参照が多いシステム

NoSQLが適しているシステムの1つに、追加処理やデータ参照が多いシステムがあります。例えば、ゲームのウェブサービスや、1秒間に何百件ものデータを扱うようなIoTシステムなどが当てはまるでしょう。

2.将来的な拡張が見込まれるデータベース

また、将来的にカラムを増やす可能性が高いデータベースを利用したい場合にもNoSQLの活用が有用であると考えられます。

3.非構造データのデータベース

NoSQLデータベースは、スキーマレスな性質のため、半構造化データおよび非構造化データへの適用が向いていると言われています。画像・音声データなどの非構造データを大量に保持したい場合などにも利用できるでしょう。

具体的な事例:ソーシャルゲーム

NoSQLの活用事例として、モバイルソーシャルゲーム開発などを行なうグリー株式会社のゲームタイトルである「アナザーエデン」の事例があります。同事例ではサービスイン直後のアクセス数は事前予測の数倍であったにもかかわらず、オートスケーリングによってリソース不足によるサービス停止は発生しませんでした。

参照元:AWS導入事例:グリー株式会社におけるAmazon DynamoDB活用事例

一言で言うなら…

NoSQLは大量のデータ利用とシステムの柔軟性を実現したい場合に利用するのが良いと言えそうです。

まとめ

NoSQLはRDB以外のデータベースの分類を表す言葉です。従来のRDBと比べて高速な処理や、システムの高い拡張性・柔軟性を実現できるメリット・特徴を持ちます。

NoSQLではRDBのようにテーブル構造にとらわれることなく、さまざまなデータモデルが利用可能であり、利用できるデータモデル毎に代表的なソフトウェアが存在しています。

・キーバリュー型:Redis、Amazon DynamoDBなど
・カラム志向型:Google Big Table、Cassandraなど
・ドキュメント型:MongoDB、MarkLogicなど
・グラフ型:Neo4j

追加処理やデータ参照が多いシステムや、画像・音声データなどの非構造データを大量に保持するシステムを開発していく可能性に備え、NoSQLという選択肢を準備できているととてもいいですね!


RELATED POST関連記事


RECENT POST「SQL」の最新記事


この記事が気に入ったらいいねしよう!