NoSQLとはなにか?特徴と4つの種類、適するケースを解説
この記事ではNoSQLの特徴を解説したのち、NoSQLの種類や特徴、適するケースを考えます。データベースの活用に興味・関心がある方は、ぜひお読みください。
この記事ではNoSQLの特徴を解説したのち、NoSQLの種類や特徴、適するケースを考えます。データベースの活用に興味・関心がある方は、ぜひお読みください。
スキルアップ
2022/09/08 UP
- 技術
- 開発
IT技術の進展にともない、「NoSQL」と呼ばれるデータベースが注目され、多くのシステムで活用されています。NoSQLは、おもなデータベースの「リレーショナルデータベース」(以下、「RDB」と記述)と大きく異なる仕組みを持ちます。機械学習の活用や多種多様なデータの活用が求められる現代において、NoSQLを知ることは重要です。
この記事ではNoSQLの特徴を解説したのち、NoSQLの種類や特徴、適するケースを考えます。データベースの活用に興味・関心がある方は、ぜひお読みください。
NoSQLとはどのようなデータベースか?
まず、NoSQLとはどのようなデータベースか解説します。システムでよく使われるRDBやSQLとの相違点、代表的なNoSQLも見ていきましょう。
リレーショナルデータベースと異なる方法でデータを格納する
NoSQLは「Not only SQL」の略で、RDBとは異なる方法でデータを格納し処理するデータベースを指します。一方でNoSQLと呼ばれるうえで、必ず満たさなければならない要件は以下の2つです。
・データベースであること
・RDBでないこと
したがって「特定の機能を備えていなければ、NoSQLではない」ということはありません。
リレーショナルデータベースとの相違点
RDBはデータを行と列で構成された、「テーブル」と呼ばれる領域に格納します。また行と列で示される項目の一つひとつは「フィールド」です。一方でNoSQLではキーと値の組み合わせなど、テーブルと異なる方法でデータを格納しています。
RDBでは、スキーマが使われます。加えて、列にはデータ型や上限の文字数を設定しなければなりません。また「年齢と氏名と職業」など、フィールドのなかに複数の項目を格納することはできません。NoSQLでは事前にデータ型や文字数の上限を決める必要がなく、値に複数の項目を格納することも可能です。
SQLとの相違点
SQLは「構造化問い合わせ言語」を指します。RDBを操作する言語であり、データベースではありません。またNoSQLの操作は、SQLと異なる手法を用います。
ただしデータ操作の方法は、必ずしもSQLと異なるとはいえません。例えばCassandraでは、SQLによく似た「CQL」を使ってデータを操作します。一方でCQLがSQLと異なる点の一つに、JOINを使えないことが挙げられます。これは、データの格納方法がRDBと異なるためです。
代表的なNoSQLデータベース
NoSQLは複数のサービスがリリースされ、広く使われています。代表的なNoSQLデータベースには、以下のものが挙げられます。
・BigTable
・Cassandra
・Couchbase
・DynamoDB
・MongoDB
・Neo4j
・Redis
NoSQLを構成する要素は、データベースごとに異なります。例えば「行」を示す用語は、「ドキュメント」「項目」と呼ばれる場合があることに注意しましょう。それぞれのデータベースが持つ特徴を理解したうえで、適切なデータベースを選ぶことが重要です。
NoSQLが注目されている理由
NoSQLが注目されているおもな理由として、データベースに格納されるデータの種類が多種多様になったこと、処理スピードに優れていることが挙げられます。
「データベース=RDB」という時代では、格納されるデータは数字や文字列を主体とする「構造化データ」と呼ばれるものでした。Excelに格納できるデータを想定していれば良かったわけです。
一方でNoSQLでは音声や画像など、Excelのセルに入らないデータも扱えます。速度を優先する構造であるため、ビッグデータなど大量データの処理に向くことも注目を集める大きな要因です。
NoSQLは4種類に分類される
NoSQLに属するデータベースは、データの格納方式の違いにより以下の4種類に分かれます。
・キーバリュー型
・ワイドカラムストア型
・ドキュメント型
・グラフ型
それぞれの特徴を確認し、NoSQLの選択に役立ててください。
その1:キーバリュー型
キーバリュー型はキーと値がペアである特徴を持つ、基本的なNoSQLの形式です。
キーの値は、一意でなければなりません。値は年齢や氏名など複数の項目を持つことができ、データごとに異なる項目を持てます。ただし値は、キーを介してのみ参照可能です。
キーバリュー型は大量データの保存が必要で、データの取得に際し複雑な問い合わせを行なわないケースに向いています。RedisやDynanoDBは、キーバリュー型を採用しています。
その2:ワイドカラムストア型
ワイドカラムストア型は、キーバリュー型の「値」の部分が1つ以上のカラム(列)になったものです。年齢や氏名など属性ごとにカラムを設定できるため、一見するとRDBのように見えるかもしれません。事実、特定のカラムを抜き出して集計する処理も可能です。
ワイドカラムストア型には、以下の特徴があります。
・各行に同じ列がなくても良い
・列を動的に追加できる
・すべての列に値がない状態も許容される
ワイドカラムストア型を使うデータベースには、CassandraやBigTableなどが挙げられます。
その3:ドキュメント型
ドキュメント型は、キーに紐づくデータをドキュメント形式で格納する方式です。データの部分は、JSONやXML形式で記述可能。書き方の自由度が高いため、複雑な要素を持つデータも格納できます。大量データにも対応可能です。
ドキュメント型は、MongoDBなどで採用されています。さまざまなシステムで活用されているデータベースです。
その4:グラフ型
グラフ型は「ノード」と呼ばれるデータの実体と、「エッジ」と呼ばれるノードどうしの関係性を示す情報で構成されます。ノードとエッジには、「プロパティ」と呼ばれる属性情報が付きます。ノードをまたいだ検索でも迅速に結果を得られることが特徴であり、特にRDBと比べた場合のスピードに優位性があります。
グラフ型は、一見するとオブジェクトと同じように見えるかもしれません。しかしグラフ型が持つ情報はオブジェクトと異なり、属性とノードどうしの関係を示すデータが主体です。
グラフ型はNeo4jやJanusGraph、InfiniteGraphなどで採用されています。
NoSQLに特徴的な4つの項目
近年のシステム開発でNoSQLが選ばれる理由には、さまざまなメリットを得られる点が挙げられます。ここでは4つの項目を取り上げ、解説していきましょう。
処理が高速
処理が高速なことは、NoSQLの持つおもなメリットの一つです。トランザクションを必須とせず、データの厳密な一貫性を確保しないことにより、迅速な処理を実現します。RDBにありがちな、データ量が増えても処理速度が下がりにくい仕組みを持つことは特徴的です。
このためビッグデータなど、大量のデータ処理が必要なシステムでも十分に活用できます。
格納できるデータの種類が豊富
NoSQLはRDBと異なり、以下に挙げるデータも格納できます。
・画像や音声データ、センサーログといった「非構造化データ」
・XMLやJSONなどの「半構造化データ」
加えてNoSQLでは「データに規則性がない」「文字列がどのくらい長くなるかわからない」といったケースでも設計し運用できます。データをあますことなく格納できることは、メリットといえるでしょう。
サーバーなどの追加により性能をアップできる
NoSQLでは性能不足が生じた際、新たにサーバーを追加する「スケールアウト」により性能をアップできます。以下のリスクや不便が生じることはなく、迅速かつ円滑に性能を引き上げられることはメリットといえるでしょう。
・メモリなどハードウェアの追加によるサーバー停止
・サーバーリプレースによる停止やデータの移行漏れ
・仮想環境の場合は、設定変更による停止
完全一貫性を必須としない
NoSQLでは、処理の結果が最終的に一貫性のある状態となればOKとする「BASE基準」を採用しています。RDBで求められる、完全な一貫性を含む「ACID特性」を満たす必要はありません。このことは、高速処理の実現に大きく貢献しています。
ただしNoSQLでも、必要に応じてトランザクションを用いて、ACID特性の要件を満たすようにつくることは可能です。システムの要件に応じて一貫性のレベルを選べることは、メリットの一つといえるでしょう。
NoSQLが適する3つのケース
NoSQLを選ぶと良いケースは、大きく3つに分けられます。それぞれのケースについて、詳しく解説していきましょう。
非構造化データや半構造化データを扱う場合
NoSQLの選択がすすめられる代表的なケースには、非構造化データや半構造化データを扱う場合が挙げられます。これらのデータをRDBで扱うことには、困難をきたすケースが多いでしょう。
RDBにこだわった結果、使いにくく遅いうえに不具合の多いシステムになっては本末転倒です。まず、データの特徴をよく見極めましょう。そのうえで、NoSQLのなかから適切なデータベースを選ぶことが成功への条件です。
スピードが第一に要求されるシステム
何よりもスピードが求められるシステムも、NoSQLが選ばれる代表的なケースです。常に大量のデータが流入するシステムの場合でも、NoSQLを使うことで速度の要件をクリアできたというケースも多いでしょう。RDBのように厳密な整合性を求めない代わりに、高速処理を可能とした結果です。
拡張する可能性が高いシステム
NoSQLならば、将来の事業拡大にもスムーズに対応できます。サーバーなどの追加により、簡単に性能を上げられることが理由です。はじめは最小限のシステム構成で運用を開始し、顧客の需要に合わせて性能をアップできます。必要な性能をジャストタイムで手に入れられることは、NoSQLならではのメリットです。
NoSQLとリレーショナルデータベースは使い分けが重要
NoSQLとRDBに、優劣はありません。適材適所での選択が有効です。それぞれどのように使い分ければ良いか、代表的なシステムの例を挙げながら確認していきましょう。
NoSQLが適するシステム
以下のシステムでは、NoSQLのなかから選ぶケースが多いでしょう。
・AIを使った画像認識や音声認識
・ビッグデータを活用した、または随時大量のデータ処理が必要なシステム
・IoTシステム
・メンテナンス時でも停止が難しいシステム
・クラウドを活用したシステム
ただし上記の項目に該当する場合でもACID特性が求められるケースなど、RDBが選択される可能性はあります。
リレーショナルデータベースが適するシステム
RDBは、厳密な一貫性を保つ必要があるシステムでよく選ばれます。以下のシステムはその一例です。
・勘定系システム
・会計システム
・証券取引システム
・在庫管理システム
RDBを活用する場合は、表の形式で格納できる「構造化データ」を用意しなければならないことに注意が必要です。非構造化データや半構造化データを活用する場合は、事前に加工する手間を要します。
NoSQLの特徴を正しく把握し、適材適所の活用を
NoSQLはさまざまなデータベースの総称であること、RDBと大きな違いがあることがおわかりいただけたことでしょう。特徴を活かしたデータベースの選定は、プロジェクトの成功と顧客の信頼を得られる重要なポイントです。NoSQLの特徴を正しく把握し、適した場面で活用するように心がけましょう。