【NoSQLとは】特徴や種類を初心者向けに分かりやすく解説するNoSQL入門書

初心者

データベースと言えば、現在リレーショナルデータベースが一般的ですが、最近NoSQLと言われるデータベースに注目が集まっています。

今回はそんなNoSQLについて初心者向けに解説していきます。

  • NoSQLとは何か?
  • NoSQLのメリットやデメリットは?
  • NoSQLの種類には何があるのか?

などの疑問に応えられるよう紹介していきますので、ぜひ参考にしてください。

ちなみにNoSQLと比較されるRDBMS(リレーショナルデータベース管理システム)について気になる方はこちらも参考にしてみてください。

【RDBMSとは】RDBMSとは何か?RDBMSの種類やそれぞれの特徴を紹介
https://freelance-attack.work/column/relational-database-management-system/

NoSQLとは

NoSQLは、『Not only SQL』を意味しているデータベース管理システムで、データベースの分類の一つです。

SQLを利用してデータの検索等を行うRDBMS以外のデータベース管理システムがNoSQLに分類されます。

現在ではデータベース管理システムとしてRDBMSが主流で、Oracle DBやMySQLなどが多くの企業に使用されていますが、ビッグデータという新しい技術が注目されており、それを支える技術としてNoSQLも注目を集めています。

実際NoSQLとして有名なMongoDBが、DBランキングの5位に位置付けるなど注目度は高いです。

参考:DBランキングhttps://db-engines.com/en/ranking
ビッグデータについても簡単に解説しておきます。

ビッグデータとは

  • Volume : 膨大なデータ容量
  • Velocity : データ処理速度
  • Variety : 多種多様なデータ

ビッグデータは上記の3つの頭文字を合わせた『3V』で定義されることが多く、要は、多種多様なデータを高速に処理、分析し活用する技術がビッグデータです。

今ではWebサービスのデータ量は増加し、表形式で表される構造化されたデータだけではなく、音声や映像といった非構造化データも含まれることが増えています。

さらにはWebサービスにおいてレスポンスのスピードは欠かせない要素です。

そういった時代背景もあり、ビッグデータという技術が注目されています。

NoSQLに期待されること~NoSQLとビッグデータ~

やはりNoSQLに期待されることは、ビッグデータを支えることです。

しかし冒頭でも説明した通り、ビッグデータに適しているデータベースとして、NoSQLが注目はされてはいるものの、まだまだ圧倒的にRDBMSの方が多くの企業に使用されています。

今後よりデータが複雑化し、スピードが求められる時代になることを想定すれば、さらなるNoSQLの発展は欠かせないでしょう。

ビッグデータの定義である3Vを高いレベルで実現できることが、NoSQLには求められています。

  • Volume : 膨大なデータ容量
  • Velocity : データ処理速度
  • Variety : 多種多様なデータ

それではNoSQLの特徴について説明していきます。

NoSQLのメリット

NoSQLのメリットはこちらです。

  • 高速な処理能力
  • 柔軟性の高さ
  • 拡張性の高さ

高速な処理能力

RDBMSでは、データの一貫性を保つためにトランザクション処理を行っていますが、NoSQLでは、そのトランザクションの機能を緩めており、データの一貫性よりも大量のデータを速く処理することに重点を置いています。

さらに複数のサーバーを活用しデータの処理をすることが出来ますので、高速な処理を実現できるようになっています。

柔軟性の高さ

NoSQLは、データの格納において柔軟に対応できます。データには、表形式で表される『構造化データ』と映像や音声などの『非構造化データ』があります。

RDBMSの場合は、前者の構造化データの格納は容易ですが、後者の非構造化データの格納には不向きです。しかし、NoSQLであればデータの種類に関わらず、どちらのデータでも格納することが出来ます。

多種多様なデータを格納できるという特徴がNoSQLにはあります。

拡張性の高さ

データ量に対して自由に拡張できるのもNoSQLのメリットです。

Webサービスではユーザー数の増減などにより、データの容量は変化します。

ただRDBMSの場合、原則メインサーバー1台で動作するよう設計されているため、データ量が増えたとしてもサーバーを増やすことが出来ずパフォーマンスが落ちてしまうリスクがあります。そしてそれを改善するにも費用面や作業面でのコストが発生してしまいます。

しかし、NoSQLはデータ量が増えた場合でもサーバーを増やす、所謂サーバーの水平分散が出来るので、パフォーマンスを維持もしくは向上させることが出来ます。

このように拡張性の高さがNoSQLの特徴です。

NoSQLのデメリット

NoSQLのデメリットはこちらです。

  • データの一貫性が保てない
  • 検索性が低い

データの一貫性が保てない

NoSQLのメリットで出た処理能力の高さにも関わってきますが、NoSQLは高速な処理能力を実現するためにデータの一貫性においては、諦めているような仕様になっています。

RDBMSのようにデータの一貫性を保つための厳密なトランザクション機能がないためデータの一貫性は緩くなってしまっています。

検索性が低い

NoSQLは、SQLを使用しません。

その為複雑なデータの検索は難しく、RDBMSのような高い検索能力はありません。

NoSQLの種類

NoSQLには、大きく分けて4つの種類があります。

  • キーバリュー型(KVS)
  • カラム型
  • ドキュメント型
  • グラフ型

これら4つの特徴やそれぞれの代表的なNoSQLを紹介していきます。

キーバリュー型(KVS)NoSQL

キーバリュー型は、キーバリューストアと呼ばれKVSと省略されることもあります。

その名の通り、キーとバリューの2つが組み合わせて格納されており、非常にシンプルで単純な構造のDBです。

構造のイメージとしては、キー列とバリュー列の2つの列でデータが格納されており、キー列にはID、バリュー列には値(情報)があるような感じです。そしてデータが増えれば2列のまま、どんどん行が増えていくようなイメージです。

ちなみにこの値には、個数制限はなく複数の値を持たせることが出来ます。

このように非常にシンプルですので、サーバーを増やして処理能力を上げる、スケールアウトがしやすいという特徴があります。

キーバリュー型(KVS)の代表的なNoSQL

キーバリュー型(KVS)の代表的なNoSQLはこちらです。

  • Redis
  • DynamoDB
  • Memcached

Redis

Redisは、オープンソースのキーバリュー型NoSQLです。

DBランキングは、全体で7位であり、キーバリュー型NoSQLとしては最も人気があります。

DynamoDB

DynamoDBは、Amazon社のAWSで提供されているNoSQLで、キーバリュー型のNoSQLです。

DBランキングは、全体で16位に位置しており、キーバリュー型NoSQLとしては2番目に人気があります。

Memcached

Memcachedは、オープンソースのキーバリュー型NoSQLで、分散メモリキャッシュシステムを構築できます。

DBランキングは、全体で27位となっており、キーバリュー型NoSQLとしては4番目に位置しています。

カラム型NoSQL

カラム型は、カラム指向型や列指向型とも呼ばれます。キーバリュー型に対してカラムの概念を持たせたDBです。

キーに対して列方向に複数のカラムを持たせることができ、キーによっては2つや3つのカラムを持たせるなど動的に追加していくことが出来ます。

列に対してデータを集計するため高速で処理でき、情報分析など集計がメインとなる活躍しているモデルです。

カラム型の代表的なNoSQL

カラム型の代表的なNoSQLはこちらです。

  • Cassandra
  • HBase
  • BigTable

Cassandra

Cassandraは、元々Facebook社によって開発されたオープンソースのカラム型NoSQLです。

DBランキングは、全体で10位に位置しており、カラム型NoSQLとしては、最も人気のあるNoSQLです。

HBase

HBaseは、オープンソースのカラム型NoSQLで、FacebookのMessengerで使用されています。

DBランキングは、全体で22位となっており、カラム型NoSQLとしては、2番目に位置しています。

BigTable

BigTableは、Google社によって開発されたカラム型NoSQLで、Google Cloud Platformのサービスの1つとして提供されています。

DBランキングでは、全体で84位と紹介しているものの中では比較的下の方に位置しており、カラム型NoSQLとしては、7番目となっています。

ドキュメント型NoSQL

ドキュメント型は、JSONやXML形式などのドキュメントをそのまま登録・管理できるモデルです。

事前にデータ構造を設計する必要がないため『スキーマレス』と言われ柔軟性の高いDBです。

複雑なデータ構造をしているアプリケーションのDBとしてよく使用されるNoSQLです。

ドキュメント型の代表的なNoSQL

ドキュメント型の代表的なNoSQLはこちらです。

  • MongoDB
  • Couchbase
  • DynamoDB

MongoDB

MongoDBは、オープンソースのドキュメント型NoSQLで、NoSQLの中で最も使用されています。

DBランキングでは、全体で5番目に位置しており、ドキュメント型NoSQLの中ではもちろん1番です。

Couchbase

Couchbaseは、対話型アプリケーションのDBとして最適なオープンソースのドキュメント型NoSQLです。

DBランキングでは、全体の26位に位置しており、ドキュメント型NoSQLとしては4番目となっています。

DynamoDB

DynamoDBは、キーバリュー型NoSQLとして紹介しましたが、ドキュメント型のNoSQLでもあります。

DBランキングで見るとドキュメント型NoSQLとして2番目に人気があります。

グラフ型NoSQL

グラフ型はグラフ構造に基づいたDBで、『ノード』『リレーション』『プロパティ』の3つの要素によって構成されており、ノードとノードの関係性を表現しています。

例えば『AさんとBさんは友達』で『BさんとCさんは友達』であれば『AさんとCさんも友達である可能性が高い』といった分析ができ、『友達かも』で出てくるような感じの構造です。

つまりFacebookなどのSNSによく使用されているDBです。

グラフ型の代表的なNoSQL

グラフ型の代表的なNoSQLはこちらです。

  • Neo4j

Neo4j

Neo4jは、グラフ型として最も人気のあるオープンソースのNoSQLです。

DBランキングでは、全体で21位に位置しており、グラフ型NoSQLとしては1番です。

最後に

現時点ではDBとしてRDBMSの方が主流ではありますが、NoSQLは、ビッグデータを支えるDBとして注目され、RDBMSにはない魅力があります。

もちろんどちらもDBの1つであり、それぞれに長所と短所がありますので適材適所で最適なDBを選んでいきましょう。

またRDBMSの中でもNoSQLの要素を取り入れ始めているものもありますので、RDBMSにも注目しておく必要があります。

NoSQLだけでなく、RDBMSも含めDB全体で最新情報のチェックは必須です。