「NoSQLってSQLを使わないっていうこと?」
「NoSQLを活用することでどういうメリットがあるかを知りたい!」
近年ビッグデータの活用とデータの多様化が進んだことで、従来のリレーショナルデータベースに代わる新しいデータベースの形が台頭しています。
リレーショナルデータベース(RDB)と聞いて思い浮かぶのは、表形式で数値や文字が格納されているExcelのようなものですが、NoSQLではこのような構造化データ以外にも画像や音楽などの非構造化データも取り扱えるのが特徴です。今回は、NoSQLについて概要やリレーションデータベース(RDB)との違いなどについてご紹介します。
NoSQLとは
NoSQL(Not Only SQL) はRDBではないデータベースの総称です。RDBといえば、OracleやMySQLなどSQLで操作するデータベースですが、NoSQLはこれらのRDB以外のデータベースを指します。
NoSQLでは表形式に限定されるRDBと異なり、以下のようなデータモデルをサポートしています。
・キーバリューストア
・ワイドカラムストア
・ドキュメントストア
・グラフストア
このように多様なデータモデルをサポートしているため、RDBとは異なり、画像や動画などの非構造化データも格納可能で、RDBよりデータを高速に処理することが可能です。
ただしNoSQLがあらゆるケースに適するわけではなく、金融関係の厳密な一貫性を保ちたいケースなどはRDBの方が適しています。
NoSQLのデータモデル
NoSQLでサポートしているデータモデルについて解説します。
キーバリューストア
NoSQLの中では最もシンプルなデータモデルです。
各項目がキーと値のペアの辞書形式で格納されます。
構造がシンプルなため、高速にデータを処理できる点が強みで、逆に複数のレコードをプルするような複雑なデータの検索には適していません。
オープンソースのキーバリューストアのNoSQLとして、RedisやMemchedが存在します。
ワイドカラムストア
キーバリューストアにカラム(列)の情報が追加されたデータモデルです。
ユーザーは必要な特定のカラムにアクセス可能で、集計処理などに向いています。
オープンソースのワイドカラムストアのNoSQLとして、Apache HBaseやApache Cassandraが有名で、Apache Cassandraはビッグデータ向けの設計で、SNSやWebサイトのリアルタイム分析などに使用されます。
クラウドサービスだと、Google CloudのBigTableが有名です。
ドキュメントストア
データをJSONやXML形式のドキュメントとして格納可能なデータモデルです。
ドキュメント形式の複雑なデータをそのまま格納可能な点が強みです。
柔軟性が高いものの、複雑なトランザクションではデータ破損など問題につながるケースもあります。
MongoDBが有名なドキュメントストアのNoSQLで、可用性やスケーラビリティが高く評価されています。
グラフストア
グラフ理論に基づいたデータモデルです。
グラフストアはノード、エッジ、プロパティという要素で成り立ち、それぞれ
ノード:データの実態
エッジ:矢印で表されるノード同士の関係
プロパティ:ノード、エッジの属性情報
このような意味合いを持ちます。
データの関係が複雑でも、高速にデータを検索可能な点が特徴的で、オープンソースの有名なNoSQLとしてNeo4jが存在します。
NoSQLとリレーショナルデータベース(RDB)の違い
NoSQLは必ずしもRDBよりあらゆる面で優れているわけではないため、違いを理解し使い分けることが大切です。
いくつかNoSQLとRDBの違いを解説します。
NoSQLはデータの完全一貫性を必要としない
NoSQLはデータの一貫性について、処理の結果が最終的に一貫性のある状態であれば可とするBASE基準を採用しています。
RDBのトランザクション処理は完全なデータの一貫性を含むACID特性を満たしているため、厳密な一貫性が求められる金融などの処理ではRDBの方が適しています。
NoSQLはデータの処理が高速
NoSQLはACID特性を満たす必要がない、多様でモダンなデータモデルから適したモデルを選択できる、といった要因からデータを高速に処理することが可能です。
ビッグデータの分析にNoSQLは向いています。
格納できるデータの種類が豊富
RDBとは異なり非構造化データ、半構造化データも格納できる点が特徴です。
画像、音楽、ドキュメントといったデータを格納できるため、多様な使い方が考えられます。
スケールアウトが容易
NoSQLは非リレーショナルデータベースのため、テーブルを接続する必要がなく、水平方向へ容易に拡張することが可能です。
ビッグデータ分析においてシステムの性能が頭打ちにならずに、分散処理など柔軟な処理を行えます。
費用対効果に優れている
商用のRDBの維持には高いコストがかかります。
NoSQLの場合は費用対効果の面で優れている場合が多いです。
レプリケーション機能
NoSQLのレプリケーション機能は、複数のサーバーに渡るデータを複製して格納します。
このレプリケーション機能により、ダウンタイム中のアクセスが保証され、サーバーがオフラインになった場合でも、データの損失を防ぎます。
NoSQLとRDBのケース別使い分け
NoSQLが向いているケースと、RDBが向いているケースについて解説します。
【NoSQLが適するケース】
・ビッグデータの活用、分析
・IoTのシステム
・不正検知アプリケーション
・ソーシャルネットワーク
・災害時でもダウンしないなどの高可用性が求められるシステム
【RDBが適するケース】
・勘定系のシステム
・eコマースの会計処理
・在庫管理システム
・証券取引システム
NoSQL活用のユースケース
次にNoSQL活用のユースケースについて具体的に見ていきます。
低遅延が必要なアプリケーションやゲーム
リアルタイムでデータを更新する必要がある、アプリケーションやゲームでの利用にNoSQLは推奨できます。
高いスループットと高速なトランザクション処理により、応答時間を迅速化し、使用量が急増した場合には、インメモリー型のNoSQLデータベースを使用することで、ディスクストレージの使用による遅れを心配する必要がなくなります。
ビッグデータ分析やトラフィックの急増が想定されるデータの分析
eコマースにおけるセールや、イベントなど、トラフィックの急増が想定されるデータの場合、キーバリューストアのNoSQLであれば、シンプルな構造のため、容易に拡張して対応することが可能です。
カラムの追加やスケールアウトが想定されるデータ
将来的にカラムを増やしたり、またはデータベースの容量自体を増やすことが想定される場合、NoSQLの活用がお勧めです。
非構造化データのデータベースとしての使用
半構造化データおよび非構造化データのデータベースとして、大量の画像、動画データ、ドキュメントの格納先としてNoSQLが活用できます。
まとめ
本記事ではNoSQLについてその特徴やRDBとの比較について解説しました。
表形式のRDBと比べるとはじめは、データ構造を直感的に理解しにくいという点で、とっつきにくさを感じられる方もいらっしゃることと思います。
従来のやり方から変化が起きている例として、データのやり取りにおいて、CSVファイルよりもJSONやXML形式の方がよく使われるようになったり、データモデルにおいてもNoSQLの方がよりモダンで現代のデータ活用の背景に則していると言えます。
特に柔軟にカラムの追加が可能という特性や、水平スケールアウトが可能な点は、データ構造の変化に強いという点で、データエンジニアやアナリストにとって嬉しい特性です。
本記事を読んでNoSQLやNoSQLのデータモデルについて興味を持っていただけたのであれば幸いです。
KUIXではただ導入・開発するだけでなく、導入後の利活用を実現することに着眼した、データレイク・DWH・データマート・BIツールの選定・導入からレポート作成、運用、啓蒙・展開までトータルのコンサルテーションなどを行っています。
「データマート/データレイク/DWH/BIツールを導入したい」
「すでに導入しているがデータ活用、展開が進んでいない」など
お困りの方は、ぜひお気軽にご連絡ください!お問い合わせはこちらから

