従来から使われているリレーショナルデータベース(RDB)は、膨大で多様なビッグデータの処理に適していないと言われています。RDBにかわり昨今注目を集めているのがNoSQLです。
それではなぜ、ビッグデータの処理には、NoSQLの方が適しているのでしょうか。本記事ではNoSQLとは何かや、RDBとの違い、NoSQLが注目される背景や種類について解説しています。
目次
NoSQLとは「RDBではないデータベース」の総称
NoSQLとは、リレーショナルデータベース(RDB)ではないデータベースの総称です。NoSQLという名称のデータベースが存在するわけではありません。
従来、最もよく使われているデータベースと言えばRDBでした。しかしRDBでは対応できないシーンが増えてきたことから、昨今ではNoSQLが注目されています。
ちなみにNoSQLは、「Not Only SQL」を略した言葉です。SQLとはRDBを操作する際に使う代表的なデータベース言語を指します。
そもそもSQL(リレーショナルデータベース)とは
リレーショナルデータベース(RDB)とは、表形式のデータを互いに関連づけることで複雑なデータ管理を可能とするデータベースの方式です。RDBでは上記イメージにもあるように、同じ属性のデータをもとに複数の表を関連づけることができます。RDBが普及した主な理由は、以下の2つです。
- 直観的に理解しやすい表形式であったこと
- SQLと呼ばれる使いやすいデータベース言語が登場したこと
これらの利点からRDBは個人の住所録から企業の基幹システムまで、幅広く使われてきました。RDBを管理するシステムをRDBMSと呼び、代表的な種類としてオープンソースのMySQLやオラクル社のOracle Databaseが挙げられます。
RDBはデータの一貫性を担保し検索性が高い
NoSQLと比較したRDBの主なメリットとして、データの一貫性を担保し検索性が高い点があげられます。「データの一貫性」とは、簡単に言うと「常に最新の正しいデータを参照できる」性質のことです。RDBでは「トランザクション」というデータの交通整理を厳密に行うことで、データの一貫性を担保しています。
また検索性の高さも、NoSQLと比較した場合におけるRDBのメリットです。RDBではSQLによって、複雑な検索を行うこともできます。
NoSQLは処理速度が優れ、「構造化データ」以外の格納も可能
RDBと比較した場合における、NoSQLの最も大きなメリットは処理速度が優れている点です。RDBはデータの一貫性を保つ目的で交通整理を行う必要があることから、データ量が増えれば増える程、処理速度が低下するという面があります。
一方のNoSQLは、RDBのような厳密な交通整理を行いません。その結果としてデータの一貫性を担保しない代わりに、膨大なデータでも素早く処理できるわけです。
「構造化データ」以外のデータを扱える点も、RDBにないNoSQLの特徴と言えます。構造化データとは、文字通り構造を整形されたデータのことです。構造化データの代表例として、ExcelやCSVファイルがあげられます。
一方「構造化データ」以外のデータとは画像・動画・PDFなど、決まった構造を持たないデータのことです。構造化データ以外のデータは、非構造化データ・半構造化データと呼ばれます。
RDBは表形式でデータを管理するデータベースであることから、構造化データ以外は格納できません。一方のNoSQLはRDBのような制約がないため、非構造化データ・半構造化データも格納できます。
NoSQLが注目されている背景
RDBに代わりNoSQLが注目される背景として、最も大きなポイントは近年ビッグデータを活用する必要性が高まっていることです。ビッグデータとは従来のシステムで処理できないような、膨大で多様なデータ群を指します。
昨今ではIoTやAIといった最新技術の発展により、ビッグデータを効率的に収集・活用できるようになりました。しかしRDBは、ビッグデータを高速に処理するのに不向きです。RDBでは、ビッグデータに含まれる非構造化データ・半構造化データを処理することもできません。
一方のNoSQLであれば、RDBに比べビッグデータの処理を高速に行える上に、非構造化データ・半構造化データも格納できます。こういった背景から、NoSQLに注目が集まっているのです。
なお、NoSQLが注目されているからといって、従来からあるRDBの役割がなくなったわけではありません。たとえば銀行の預金データやショッピングサイトの購入データのように、データの一貫性が必要不可欠なシーンではRDBが適しています。RDBとNoSQLを適切に使い分ける必要があるのです。
NoSQLの種類
NoSQLは、RDB以外のデータベースを指します。それでは、NoSQLにはどのような種類があるのでしょうか。以下、代表的な種類を1つずつ紹介します。
最もシンプルな「キーバリュー型」
キーバリュー型はデータを識別する一意の「キー」と、「キー」と組になる「バリュー」だけで構成されるシンプルなデータベースの種類です。バリューの内容に関しては、データごとに異なっていても構いません。
キーバリュー型は構造がシンプルなので高速に処理できる上に、容量も少なくてすみます。一方で複雑な検索には適していません。
キーバリュー型の代表的なデータベースとして「Redis」があります。Redisでは全てのデータをメモリ上に格納し、データに対するアクセスが非常に高速となる点が主な特徴です。
キーバリュー型にカラムを追加した「カラム指向型」
カラム指向型は、キーバリュー型に「列(カラム)」が追加されたデータベースの種類です。キーごとに任意のカラムを追加できるのに加え、全てのカラムにバリューが入っている必要がないため柔軟にデータベースを構築できます。
カラム指向型は列方向にデータを処理するため、任意の列をまとめて処理するのに適している点も特徴的です。この特徴から特定の列を抜き出して行うような集計処理を得意としています。カラム指向型データベースの代表例としてあげられるのが、BigTableやApache HBaseです。
複雑なデータを管理できる「ドキュメント型」
JSONやXMLといったドキュメント形式でデータを管理するデータベースの種類です。ドキュメントごとに、異なるデータ形式を採用することもできます。文字通りドキュメント形式の複雑なデータをそのまま扱えるのが、ドキュメント形式の主なメリットです。
ドキュメント形式の代表的なデータベースとして、JSON形式のデータに対応したMongoDBがあげられます。MongoDBは可用性やスケーラビリティの高さなどから、世界的に最も利用されているドキュメント型データベースの1つです。
NoSQLだが検索性に優れる「グラフ型」
グラフ型といっても、円グラフや棒グラフといった図形式のデータベースではありません。以下3つの要素でデータ同士の関係性を表現する、「グラフ理論」に基づいたデータベースです
- 「ノード」:丸や点で表現されるデータの実態
- 「エッジ」:矢印で表現されるノード同士の関係性
- 「プロパティ」:ノードやエッジの属性情報
グラフ型データベースは、データ同士の関係性が複雑な場合でも検索速度が速いのが大きな特徴です。よく使われるグラフ型データベースの例として、Neo4jやInfiniteGraphがあげられます。
まとめ
NoSQLとはリレーショナルデータベース(RDB)以外のデータを指す総称です。データの一貫性を担保する反面、その分だけデータの処理に時間がかかるRDBは、ビッグデータの処理に適していません。
一方のNoSQLは、データの一貫性を担保しないかわりに、ビッグデータを高速に処理可能です。RDBとNoSQLはそれぞれ適正が異なることから、シーンに応じて正しく使い分ける必要があります。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。