NoSQLとは?メリット・将来性について分かりやすく解説
thumb_nosql_01
NoSQLとは?メリット・将来性について分かりやすく解説
アンドエンジニア編集部
2022.02.13
この記事でわかること
NoSQLはデータアクセスにSQLを用いないデータベースシステムの総称です。
NoSQLのデータ保存方式には「Key/Value」「カラム指向」「ドキュメント」「グラフ」があります。
NoSQLは非構造化データを扱う場合、頻繁に型の拡張が見込まれるデータを扱う場合、高いスケーラビリティが必要な場合に適しています。

NoSQLとは?

img_whatisnosql_01

NoSQLとは、「Not Only SQL」の略で、現在広く使われているリレーショナルデータベース(Realational Database、以降RDB)ではないデータベースシステムの総称です。RDBとは異なり、データアクセスにSQLを使用しないという特徴があります。読み方は「ノーエスキューエル」です。

RDBとは異なるというところから、NoSQLは「非リレーショナルデータベース」とも呼ばれます。

本記事では、RDBと比較した時にNoSQLとはどういったものなのか、どういった時にNoSQLを採用すべきなのかについて分かりやすく解説します。

RDBとは?

RDB(アールデービー)とは、行および列でできた「表」形式でデータを保存・管理する方式を採用したデータベースシステムのことを指します。表形式を採用するメリットとしては、以下のようなものがあります。

・複雑な関係性を持つデータ同士を管理できる ・表同士を結合し、複雑な検索を実行できる ・トランザクションを張ることにより、データの一貫性が担保しやすい

PostgreSQL入門、複数のRDBMSを習得して更なる活躍を

NoSQLが必要になった背景

NoSQLが必要になってきた理由には、従来のRDBの設計思想に基づくデメリットによるものと、近年のテクノロジーの急速な進化・ビジネススピードの加速という2つの側面があります。

既に述べたように、RDBは複雑な関係性を持つデータを保持・管理できるのがメリットです。一方で、システム運用期間が長くなり、保持するデータ量が大きくなってくると性能の劣化を招きやすいというデメリットがありました。

RDBは1970年に提唱されてから長く使われていますが、設計当時データは「小さく、構造化されており、時間による変化が小さい」と考えられていました。大規模なデータ管理には適していなかったのです。

また、ここ数十年の社会環境の変化として、システムが管理するデータ量が増大してきたことも挙げられます。テクノロジーの進化、ビジネススピードの加速により、今まで取得できなかったデータも取得できるようになり、頻繁に取得される大量のデータを扱う必要が出てきました。この増大したデータが「ビッグデータ」と呼ばれるのをご存知の方も多いでしょう。

これら2つの理由から、頻繁に生まれる大量のデータを効率よく管理できるデータベースシステムが必要になり、NoSQLが生まれた背景です。

NoSQLの種類

img_whatisnosql_02

RDBではデータの検索・登録・更新・削除にSQLという言語を用います。一方で、NoSQLではその名の通り、データへのアクセスにSQLを用いる必要がありません。SQLを用いない場合、どのようにデータアクセスするのでしょうか。

NoSQLにおける主なデータアクセス方式には、以下に挙げる4つがあります。

Key/Value型

Key/Value型は、NoSQLの中で最もシンプルな構造のデータベースです。取得対象となるValueに対して、それを一意に特定するためのKeyが設定されています。いわゆる”JSON”のようなデータ構造と言えば伝わる方も多いのではないでしょうか。

また、他のアクセス方式では達成できない大規模な水平スケーリングが可能です。DBアクセスが一時的に増大した場合、負荷分散のために大規模なデータベースを小さなコンポーネントに分割し、より高速に管理しやすくします。AWSのDynamoDB、Redisなどがこの方式を採用しているNoSQL製品です。

【参考】:Amazon DynamoDB

JSONファイルとは?基本構造からファイルの読み書き方法まで解説

カラム指向型

カラム指向型はワイドカラム型とも呼ばれ、Key/Value型を拡張したようなアクセス方式です。

Key/Value型においてはKeyとValueが1:1の関係だったのに対して、カラム指向型では1つの行キーに対して、複数のKey/Valueを紐づけて管理します。1つの行キーに紐づいているKey/Valueを「カラム」と呼びます。

行/列の概念を持っているのでRDBと似ていますが、1つのキー(行)に対してカラム(=列)の数を動的に増減させることはできる点がNoSQLとしての特徴です。Apache Cassandraや、GCPのBigTableが主なカラム指向型NoSQLです。

【参考】:Apache Cassandra | Apache Cassandra Documentation

ドキュメント指向型

ドキュメント指向型は、JSONやXMLといった形式のドキュメントとしてデータを管理する方式です。各ドキュメントを一意に特定するために、ドキュメントはそれぞれキーを持っています。

各ドキュメントは階層構造を持たず、キーのみによって一意に判別されます。ドキュメントの形式がある程度自由(JSONやXML)であることがメリットですが、一方ドキュメント同士の結合ができないので、複雑な検索処理には向いていません。MongoDBやCouchDBが代表的なドキュメント指向型のNoSQL製品です。

【参考】:MongoDB: the application data platform | MongoDB

グラフ指向型

グラフ指向型は、有向グラフと呼ばれるデータ構造でデータを管理する方式です。データの実体を表す「ノード」、ノード間の関連性をタイプと方向により表す「エッジ」、ノードの属性情報をKey/Value形式で保持する「プロパティ」の3要素を持ちます。

ユーザ間の関係を表現したり、Webサイト同士のリンク構造をしたり、大量かつ複雑な繋がりをデータとして表す際に効力を発揮します。

【参考】:Graph Data Platform | Graph Database Management System | Neo4j

どういう時にNoSQLを採用すべきか

img_whatisnosql_03

ここまで、NoSQLが必要になった背景および、NoSQLが具体的にどうデータを保持するかについて解説してきました。NoSQLは決してRDBの上位互換、または代替品ではありません。システムが扱うデータの特徴によって、どちらを使うか判断する必要があります。

以下では、どんな場合にNoSQLを使うとより良いシステムができるのかについて、解説していきます。

非構造化データを扱うことが多い場合

構造化データとは、従来のRDBで管理されてきた、行と列の概念を持っているデータのことです。構造化されているため検索・集計・比較が行いやすいメリットがあります。

一方で非構造化データとは、構造が定義されていないデータのことを指します。画像・動画・音声・センサーのログ・WordによるOffice製品で書かれた文章などがこれに相当します。NoSQLは行の列の概念を持たないデータを大量に保持・管理することに特化しているため、このようなデータを扱いやすいと言えます。

データ型の拡張が頻繁に見込まれるデータを扱う場合

RDBを用いたシステムでも、ビジネス要件によっては2回目以降のリリースでテーブルにカラム変更が必要になることは少なくないでしょう。RDBの場合、カラム追加の際にはデータの整合性を保ち、システム運用が継続できるようにリリースしないといけません。また、カラム追加ではなくカラム削除が必要になった場合、実施が難しいこともあります。

こういったデータ構造の変化がシステムの運用中に頻繁に見込まれる場合は、NoSQLが大きな効力を発揮します。Key/Value型やカラム指向型のデータ管理方式を用いれば、Keyに対するValueの型が変更になったとしても継続してシステム運用することができます。

強いスケーラビリティが必要なシステムの場合

スマートフォンアプリのゲームやSNSなど、時間帯によって同時アクセス人数が大幅に変わることが予想される場合にも、NoSQLを検討する余地があります。

NoSQLはシングルサーバアーキテクチャの制限を受けず、分散システム上で拡張しスケールアウトできるように設計されています。アクセス数が増大した場合でも、新規にDBサーバを複数立ち上げて全体の処理速度を担保することができます。

NoSQLの将来性

img_whatisnosql_04

SNS人口の増加、IoT技術の促進などによって、システムが管理すべきデータ量は今後さらに増加することが予想されます。このことから、我々エンジニアがNoSQLに触れる機会は多くなり、NoSQLを扱えるエンジニアの需要はますます高くなっていくでしょう。

社内のプロジェクトで触れる機会があれば最高ですが、そうでない方は個人でNoSQLを用いた開発を行ってみるのも、今後のキャリア形成をより良いものにしてくれるでしょう。

コスト面が気になりますが、例えばAWSのDynamoDBは以下のような無料枠を月毎に設けてくれているので、個人開発レベルなら問題なく使い続けることができます。是非試してみてください。

・25GBのストレージ ・25個のプロビジョニングされた書き込みキャパシティーユニット (WCU) ・25個のプロビジョニングされた読み込みキャパシティーユニット (RCU) ・1か月あたり最大 2 億リクエストの処理が十分に可能

【参考】:AWS クラウド無料利用枠 | AWS

ビッグデータ時代に備えて、NoSQLにも慣れておこう

img_whatisnosql_05

NoSQLはRDBのメリットを捨てた代わりに、ビッグデータを管理するのに特化し、強いスケーラビリティを持っています。NoSQLはRDBに取って代わられるものではなく、システム要件ごとにこれら2つを正しく使い分ける必要があります。

NoSQLを扱ったことのあるエンジニアはまだまだ少ないため、是非システム開発にビッグデータを扱う要件があった場合、本記事を参考にNoSQLの導入にチャレンジしてみてください。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT