新製品・アップデートのご紹介MongoDB は、Voyage AI の買収を通じて、Atlas における生成 AI アプリケーションの精度と信頼性を強化します。詳しく見る >>
新着情報今すぐチェック!:AI 対応開発向け MongoDB MCP Server(パブリックプレビュー)ブログを読む >>
新着情報MongoDB 8.0:圧倒的な速度と性能を提供。詳しく見る >>

SQL データベースと NoSQL データベースの理解

2024年には、ビッグデータ市場の規模が史上初めて840億ドルに達すると予想されています。世界中で毎日約2.5クイントリオンバイトのデータが生成されていることを踏まえると(BDAN.com、2024年)、この市場の拡大は極めて理にかなっており、指数関数的なデータベースシステムの開発と利用を推進する要因の一つとなっています。

最も一般的に使用されているデータベースのタイプには、SQL データベース(例:リレーショナルデータベース)と NoSQL データベースがあります。SQL データベースと NoSQL データベース、それらの仕組み、一般的なユースケース、各データベースタイプの長所と短所について詳しく説明します。

目次

構造化クエリ言語(SQL)

SQLとは何か?

SQL(Structured Query Language の略)は、データベース内のデータの挿入、アップデート、クエリ、削除などのタスクに一般的に使用される、ドメイン固有のプログラミング言語です(例:特定のタスクまたは問題を対象とする言語)。SQL は、データベースのスキーマ(例:データの書式設定ルール、テーブル/インデックス構造)を作成および変更するほか、データベースのアクセス権および管理パラメーターを定義するためにも使用されます。

構造化データとは何ですか?

構造化データとは、一貫した事前定義済みの形式で整理され、多くの場合英数字で構成されるデータのことです。例としては、金融トランザクション、在庫レコード、または顧客リストなどがあり、これらは多くの場合 SQL データベース(リレーショナルデータベースなど)に格納されます。

SQLデータベースとは何ですか?

「SQL データベース」という用語は、SQL がそのデータベースを作成および管理するために使用されるプライマリプログラミング言語であるデータベースの種類を指します。SQL アプリケーションプログラミングインターフェース(API)には、開発者が個別の SQL コマンドを何度も作成しなくてもデータベースの操作を実行および管理できるようにする関数のグループが含まれています。

小売業者のトランザクションを保存する場合でも、企業の財務情報を保存する場合でも、SQL データベースはリレーショナルデータベースと呼ばれるタイプのデータベースに分類されます。

リレーショナルデータベース

リレーショナルデータベース(リレーショナルデータベースマネジメントシステム(RDBMS))では、テーブルの形成に使用される行と列の中にデータを保存します。外部キーを使用して、2つのテーブル(またはそれ以上)間の関係を作成できます。これらの外部キー(一意の識別子など)は、テーブル間に存在する定義済みの関係を維持します。

リレーショナルデータベースは、固定されたスキーマを使用して作成および管理されることに留意することが重要です。固定されたスキーマとは、データベースに取り込まれるすべてのデータが事前定義された形式標準に正確に合わせられている必要があることを意味し、これがリレーショナルデータベースが保存できるデータ構造のタイプを制限します。例えば、リレーショナルデータベースは非構造化データを処理することはできません(例:形式が一貫しておらず、プリセットデータモデルに調整されていない情報)。しかし、構造化データや半構造化タイプのデータ(例:コンシステントな形式を持ち、プリセットデータモデルに調整されているデータ)を含む、トランザクション情報や財務情報をサポートすることには優れています。

SQL データベースの例

さまざまな SQL データベースの例には、次のようなものがあります。

他のタイプのデータベースでもデータ間の関係を確立できることに注意することが重要です。正規化された表形式のデータベース(SQL やリレーショナルデータベースなど)の場合、これらの関係は外部キーや交差テーブルを使用して表現されます。MongoDB などのデータベースマネジメントシステム(DBMS)(NoSQL データベースなど)の場合、これらの関係はデータを埋め込むか参照することで確立されます。

Not only Structured Query Language(NoSQL)

NoSQLとは何か

NoSQL (Not only SQL の略) は、データベース内の非構造化データおよび半構造化データを取り込み、保存し、検索するために使用されるデータベースマネジメントシステムのアプローチです。つまり、従来の(SQL などの)リレーショナルデータベースでは分析や集計ができないデータであっても、そのままのネイティブ形式で NoSQL データベースに取り込めます。NoSQL と呼ばれる理由は、これらのデータベースが非テーブル型、非リレーショナルデータのモデルを取り扱えるだけでなく、SQL のようなクエリ言語もサポートできることを強調するためです。

非構造化データとは何ですか?

非構造化データは、定義済みのデータモデルや一貫した組織を持たないデータです。さらに、ソーシャルメディアの書き込みなどの非構造化データは迅速にアップデートおよび変更される可能性がありますが、銀行のトランザクションなどの構造化データの変化率ははるかに低くなります。非構造化データの例には、画像、オーディオファイル、ビデオ、地図などがあります。

NoSQLデータベースとは何ですか?

NoSQL データベースは、非構造化データおよび半構造化データに対応する柔軟なスキーマを利用すると同時に、テーブル形式以外のデータストレージ方式を利用するデータベースです。

柔軟なスキーマを採用することで、NoSQL データベースは非構造化データをネイティブ形式(例:.txt、.JPG、MP3)のまま取り込むことができます。一方、SQL データベースでは、すべてのデータをあらかじめ定義された形式に合わせる必要があるため、これは不可能です。さらに、NoSQL データベースがデータを保存する際には、柔軟なデータモデルが採用されるため、非構造化データファイルが異なるデータ構造を持っていても、同じコレクション内に保存できます。

詳細については、チュートリアルNoSQL データベースをご覧ください。

NoSQL データベースの種類

NoSQL データベースには以下のような種類があります。

  • ドキュメントデータベース: ドキュメントデータベース(オブジェクト指向データベースとも呼ばれます)は、JSON(JavaScript Object Notation)オブジェクトに似たドキュメントにデータを保存しますが、これらは JSON ストアではありません。これらは、オブジェクトリレーショナルマッパー(ORM)を必要とせずに、開発者が使用するプログラミング言語のネイティブオブジェクトから返されるドライバーを使用します。各ドキュメントはそれ自体がレコードとして扱われ、数値、配列、オブジェクト、文字列、あるいはブール文字などの値を格納できます。さらに、キーと値のペア、ネストされたドキュメント、またはその他の構造化データを含めることができます。これらの NoSQL データベースの一般的なプロバイダは MongoDB です。
  • キーバリューデータベース:キーバリューデータベースは、キーと値のペアのグループとしてデータを収集、検索、保存します。つまり、各データレコードは一意のキーと関連付けられた値で表されます。キーは、データベースから対応する値を抽出するために使用されます。たとえば、インテリアデザインのキーバリューデータベースでは、キーを「color」、値を「purple」にする場合があります。これらの NoSQL データベースシステムの一般的なプロバイダーには、AWS や ScyllaDB などがあります。
  • カラムファミリーストア: カラムファミリーデータベースでは、データを行ではなく列に編成します。これは、深さがスパースで幅の広いデータセットを扱う場合に役立ちます。実際、カラムファミリーストアは「ワイドカラムストア」と呼ばれることもあります。カラムファミリーストアでは、各行に異なる列セットがあり、それらの列は「ファミリー」にまとめられます。これらのデータモデルは、パフォーマンスを最適化するための水平拡張のメリットを得られる大規模データセットを扱う際に役立ちます。これらの NoSQL データベースの一般的なプロバイダーには、Apache Cassandra と HBase があります。
  • グラフデータベース:グラフデータベースでは、ノードとエッジにデータを保存します。ノードは通常、人、場所、物事に関する情報を保存するのに対し、エッジはノード間の関係に関する情報を保存します。グラフデータベースは、グラフ構造(ソーシャルネットワーク、階層構造など)をクエリするための優れたツールです。これらの NoSQL データベースの人気のプロバイダーには、Neo4j、AWS、Kibana などがあります。

SQL データベースと NoSQL データベースの主な違い

SQL データベースと NoSQL データベースはどちらも有益な機能を提供しますが、両者の主な違いを理解することが重要です。

データベースストレージモデル

データストレージに関する SQL データベースシステムと NoSQL データベースシステムの違いは際立っています。具体的には、SQL データベースは行と列を含むテーブルにデータを保存しますが、NoSQL システムは、取り込まれる非構造化データのタイプに応じて、さまざまな方法 (JSON ドキュメント、キーと値のペアリング、ファミリーグループ化、グラフノード/エッジなど) を使用してデータを保存します。

データ型

NoSQL データベースは非リレーショナルデータベースとも呼ばれ、非構造化データの取り込み、保存、検索ができますが、SQL データベース(従来のレガシーリレーショナルデータベースなど)ではできません。SQL データベースは、構造化データの取り込み、保存、検索のみが可能です。これは、利用される SQL スキーマと NoSQL スキーマの違いによるものです。

スキーマ

SQL データベースは、取り込むデータが準拠する必要がある、厳格で事前定義されたデータスキーマに依存しています。しかし、NoSQL データベースは柔軟なスキーマを使用しているため、さまざまなネイティブ形式のデータを取り込むことができます。

スケーラビリティ

データベース管理者にとって、データベースシステムの成長と展開を計画することは重要です。これは、SQL データベースと NoSQL データベースの明確な違いの一つです。

SQLデータベース

SQL データベースは従来、垂直方向にスケーリングされてきました。つまり、リソース(CPU、ストレージ、メモリなど)が単一のサーバーに追加されます。また、スケーリングされる容量が有限のサーバーが1台しかないため、成長の量に制限が生じる可能性がありますが、このスケーリングの選択にはいくつかの理由があります。

NoSQL データベース

NoSQL データベースシステムは、多くの場合、分散システムと呼ばれる構成になっています。これは、多数の独立したコンピュータ(ノードなど)がネットワークを介してリンクされ、共通の目的を達成するために連携することを意味します。分散システムの一部であるということは、水平スケーリングと垂直スケーリングを活用できることも意味します。

水平スケーリングには、分散システムの利用可能なリソースとキャパシティーを増やして、そのシステムにより多くのノード(コンピューターやサーバーなど)を追加することが含まれます。そうすることで、より多くのノードがシステムのワークロードをサポートできるようになります。さらに、追加のノードを追加し続けることができるため、キャパシティーの観点からデータベースの拡張に事実上制限がありません。

データベースの拡張の詳細をご覧ください。

MongoDB 分散型システム研究グループのページおよび MongoDB システム研究グループのページをご覧いただき、継続中の研究について詳しく学んでください。

SQL データベースと NoSQL データベーステクノロジーのユースケース

SQL データベースは、トランザクションの整合性を維持しながら構造化されたリレーショナルデータを管理し、複雑なクエリを実行する点で優れています。一方、NoSQL データベースは、無制限のスケーラビリティと柔軟性を提供しながら、非構造化データまたは半構造化データのクエリと保存において比類がありません。

とはいえ、ユースケースは、SQL データベースと NoSQL データベース(リレーショナルデータベースと非リレーショナルデータベースなど)のどちらを選択するかの決定的要因となります。SQL データベースと NoSQL データベースの利点と関連するユースケースの概要を次に示します。

SQL データベースのユースケース

SQL データベースの主な特性は、次のユースケースに適しています。

規制コンプライアンス

SQL データベース構造は ACID コンプライアンスに適しているため、政府や業界の特定の基準を満たす必要があるデータを保存する目的でよく使用されます。

以下のユースケースはすべて、何らかのレベルの ACID コンプライアンスを伴います。

トランザクションデータベース

トランザクションデータベースは、二者以上の当事者間のやり取りの結果として生じるデータを保存します。

例:

  • 小売業の POS(Point-of-Sale)データベース
  • 医療処方および注文データベース
  • 商業銀行業務
  • 会計および財務記録管理データベース

エンタープライズリソースプランニング(ERP)システム

ERP システムは、企業による業務、従業員管理、生産などに不可欠なプロセスの管理を支援するために使用されます。

例:

  • 人事データベース
  • サプライチェーン管理システム
  • リスクマネジメントシステム

NoSQL データベースのユースケース

NoSQL(非リレーショナル)データベースは ACID に準拠していないという一般的な概念がありますが、実際には準拠しているものもあります。MongoDB は、NoSQL の ACID 準拠データベースの代表的な例です。

これらを踏まえ、一般的な NoSQL データベースのユースケースの例をいくつか紹介します。

トランザクションデータベース

NoSQL データベースは、複数の当事者間のやり取りから生じる非構造化データの保存に使用されるため、トランザクションデータベースもサポートできます。

例:

  • 非リレーショナルデータベースの機能を必要とする医療の患者ファイル(例:患者のレコード、X線/スキャンの写真や動画)
  • 保険の案件ファイル(例:自動車事故の写真、傷害に関する文書)
  • 法務文書データベース(例:供述調書、答弁書、事件ファイル)

ドキュメントデータベースとデジタルアセットマネジメント(DAM)

ドキュメントデータベースとデジタルアセットマネジメントでは、ドキュメント、画像、マルチメディアコンテンツ、動画などを保存、管理できます。

例:

  • オンラインライブラリ(例:法律ライブラリ、オンラインの米国議会図書館)
  • Kindle や Nook などのデジタルパブリッシングプラットフォーム
  • Netflix や Hulu などのメディアストリーミングサービス
  • Instagram や Meta などのオンライン写真共有プラットフォーム

グラフおよびネットワーク分析

グラフデータベースとネットワークデータベースは、相互接続されたデータ要素内の直感に反する関係を特定して分析できるため、レコメンデーションエンジン、ソーシャルネットワーク、関連するネットワーク分析といったデータ構造の管理に優れています。

例:

  • ソーシャルネットワーク分析(例:投稿やユーザーメトリクス)
  • 異常なトランザクションやその他の異常を分離する不正検知
  • ナレッジグラフ(例:Gartner の製品/サービスクアドラント)

モノのインターネット(IoT)プラットフォーム

IoTプラットフォームは、センサデータとデバイスのメタデータをリアルタイムで保存・分析するためによく使用されます。

例:

  • スマートホームシステム(例:Google Nest、Amazon Alexa)
  • スマートシティシステム(例:信号機の操作)
  • 気象情報の収集

よくある質問

今すぐ Atlas を利用する

すぐに利用を開始することができます。無料のクラスターには 512 MB のストレージが付属しているため、サンプル データを使用してプラットフォームに慣れ親しんでいただけます。
無料トライアルご相談・お問い合わせ
トライアルには以下が含まれています。
  • 世界中の 115 以上のリージョンで利用可能
  • サンプルデータセット
  • 常時認証
  • エンドツーエンドの暗号化
  • コマンドラインツール