NoSQL データベースの説明

NoSQL データベースの説明

 

NoSQLとは?

NoSQLは、従来型のリレーショナルデータベース管理システム(RDBMS)から脱却するための代表的なアプローチです。NoSQLを定義するには、まずRDBMSで使用されるクエリ言語であるSQLについて説明する必要があります。リレーショナルデータベースでは、テーブルや列、行、スキーマを使ってデータの整理や取得を行います。対照的に、NoSQLデータベースではこのような構造に依存せず、より柔軟なデータモデルを使用しています。NoSQLには、「SQLではない」という意味と「SQLだけではない」という意味があります。RDBMSは、次世代データを多用するアプリケーションで必要とされるパフォーマンスや拡張性、柔軟性のニーズを満たせなくなっており、主流企業はNoSQLデータベースに移行しつつあります。非構造化データは、構造化データよりはるかに急速に拡大しており、かつRDBMSのリレーショナルなスキーマには適合しません。このような非構造化データを格納するのに、NoSQLは非常に便利なのです。一般的な非構造化データには、ユーザーデータやセッションデータ、チャット、メッセージ、ログのデータ、IoDやデバイスデータなどの時系列データ、ビデオや画像などのラージオブジェクトなどがあります。

NoSQLデータベースのタイプ

NoSQLには、特定のニーズやユースケースに対応するため、いくつかのバリエーションが作成されています。このようなバリエーションは、以下の4つのカテゴリーに分類できます。

  • キー/バリュー型データストア:キー/バリュー型のNoSQLデータベースは、シンプルさを最大の特徴としており、アプリケーションが非トランザクション型データの高速なRead/Write処理に対応するために非常に有効です。値としてあらゆる種類のバイナリオブジェクト(テキスト、ビデオ、JSONドキュメントなど)を格納でき、キーでアクセスできます。値として格納されるデータをアプリケーションが完全に制御できるため、最も柔軟なNoSQLモデルと言えます。高い拡張性と可用性を実現するため、クラスタをパーティション化し、データは複製保存されます。このため、一般的にキー/バリュー型ストアはトランザクション処理が苦手です。ただし、高速の非トランザクション型データを扱うアプリケーションの拡張性の調整には絶大な効力を発揮します。
  • ドキュメントストア:ドキュメントデータベースには、一般的に自己記述型のJSON、XML、BSONドキュメントが格納されます。キー/バリュー型ストアに似ていますが、この場合、値は1つのドキュメントになり、特定のキーに関連するすべてのデータが格納されます。ドキュメント内で頻繁に使用されるフィールドにはインデックスを設定して、キーを知らなくても素早く取得できるようにすることができます。各ドキュメントの構造は、同じであっても異なっていても構いません。
  • ワイドカラムストア:ワイドカラムNoSQLデータベースは、RDBMSと似た行列を持つテーブルにデータを格納しますが、カラムの名前やフォーマットはテーブル内の行ごとに可変です。ワイドカラムデータベースでは、関連するデータのカラムが1つのグループにまとめられます。クエリを使用すると、そのクエリと関連付けられたカラムのみが取得されるため、1回の操作で関連するデータを取得できます。RDBMSでは、データはディスク上の異なる場所に格納された異なる行にあるため、取得には複数のディスク操作が必要になります。
  • グラフストア:リレーションシップの格納、マッピング、クエリにグラフ構造を使用するグラフデータベースです。インデックスフリー隣接性により、隣接する要素はインデックスを使用することなくまとめてリンクされます。

マルチモーダルデータベースは、上述の4タイプの組み合わせを活用することで、幅広い用途に対応できます。

NoSQLのメリット

NoSQLデータベースは、従来型のRDBMSと比べて、以下のような重要な優位性を企業に提供します。

  • スケーラビリティ:NoSQLデータベースでは、コモディティハードウェアを使用して、素早く、かつサービスを中断することなく、キャパシティを追加または削減できる、スケールアウト手法が採用されています。これにより、RDBMSのスケール調整に必要な手動シャーディングに伴う膨大なコストと手間を排除できます。
  • パフォーマンス:NoSQLデータベースのパフォーマンスは、コモディティクラスのリソースを追加するだけで簡単に向上できます。これにより、リソース追加にかかる投資収益率を予測しながら、信頼性の高い高速なユーザーエクスペリエンスの提供を継続していくことができます。もちろん、手動シャーディングなどのオーバーヘッドは発生しません。
  • 高い可用性:NoSQLデータベースは、全般的に高い可用性を確保し、プライマリノードとセカンダリノードに依存する、典型的なRDBMSアーキテクチャにつきものの複雑性を回避するように設計されています。一部の「分散型」NoSQLデータベースでは、自動的に複数のリソース間でデータを均等に分散するマスタレスアーキテクチャが採用されているため、ノードの1つに障害が発生しても、アプリケーションからの読み書き操作が阻害されることはありません。
  • グローバルな可用性:複数のサーバー、データセンター、クラウドリソースに渡ってデータを自動的に複製することで、分散型NoSQLデータベースは、遅延を最小化し、ユーザーの所在地に関わらず、一貫したアプリケーション体験を提供します。もう1つのメリットは、RDBMSの手動設定というデータベース管理の負荷が大幅に削減されるため、運用チームは他の業務上の優先事項に集中できることです。
  • 柔軟なデータモデリング:NoSQLは、柔軟で流動的なデータモデルの実装を可能にします。アプリケーション開発者は、データベースのスキーマとの適合性は考えずに、特定のアプリケーションのユースケースに最も自然に適応するデータ型とクエリのオプションを活用できます。結果として、アプリケーションとデータべース間のやり取りがシンプルになり、高速化され、よりアジャイルな開発が可能になります。