2024年には、ビッグデータ市場の規模が史上初めて840億ドルに達すると予想されています。世界中で毎日約2.5クイントリオンバイトのデータが生成されていることを踏まえると(BDAN.com、2024年)、この市場の拡大は極めて理にかなっており、指数関数的なデータベースシステムの開発と利用を推進する要因の一つとなっています。
最も一般的に使用されているデータベースのタイプには、SQL データベース(例:リレーショナルデータベース)と NoSQL データベースがあります。SQL データベースと NoSQL データベース、それらの仕組み、一般的なユースケース、各データベースタイプの長所と短所について詳しく説明します。
目次
- 構造化クエリ言語(SQL)
- Not only Structured Query Language(NoSQL)
- SQL データベースと NoSQL データベースの主な違い
- SQL データベースと NoSQL データベースのユースケース
- よくある質問
構造化クエリ言語(SQL)
SQLとは何か?
SQL(Structured Query Language の略)は、データベース内のデータの挿入、アップデート、クエリ、削除などのタスクに一般的に使用される、ドメイン固有のプログラミング言語です(例:特定のタスクまたは問題を対象とする言語)。SQL は、データベースのスキーマ(例:データの書式設定ルール、テーブル/インデックス構造)を作成および変更するほか、データベースのアクセス権および管理パラメーターを定義するためにも使用されます。
構造化データとは何ですか?
構造化データとは、一貫した事前定義済みの形式で整理され、多くの場合英数字で構成されるデータのことです。例としては、金融トランザクション、在庫レコード、または顧客リストなどがあり、これらは多くの場合 SQL データベース(リレーショナルデータベースなど)に格納されます。
SQLデータベースとは何ですか?
「SQL データベース」という用語は、SQL がそのデータベースを作成および管理するために使用されるプライマリプログラミング言語であるデータベースの種類を指します。SQL アプリケーションプログラミングインターフェース(API)には、開発者が個別の SQL コマンドを何度も作成しなくてもデータベースの操作を実行および管理できるようにする関数のグループが含まれています。
小売業者のトランザクションを保存する場合でも、企業の財務情報を保存する場合でも、SQL データベースはリレーショナルデータベースと呼ばれるタイプのデータベースに分類されます。
リレーショナルデータベース
リレーショナルデータベース(リレーショナルデータベースマネジメントシステム(RDBMS))では、テーブルの形成に使用される行と列の中にデータを保存します。外部キーを使用して、2つのテーブル(またはそれ以上)間の関係を作成できます。これらの外部キー(一意の識別子など)は、テーブル間に存在する定義済みの関係を維持します。
リレーショナルデータベースは、固定されたスキーマを使用して作成および管理されることに留意することが重要です。固定されたスキーマとは、データベースに取り込まれるすべてのデータが事前定義された形式標準に正確に合わせられている必要があることを意味し、これがリレーショナルデータベースが保存できるデータ構造のタイプを制限します。例えば、リレーショナルデータベースは非構造化データを処理することはできません(例:形式が一貫しておらず、プリセットデータモデルに調整されていない情報)。しかし、構造化データや半構造化タイプのデータ(例:コンシステントな形式を持ち、プリセットデータモデルに調整されているデータ)を含む、トランザクション情報や財務情報をサポートすることには優れています。
SQL データベースの例
さまざまな SQL データベースの例には、次のようなものがあります。
- Oracle:Oracle Database は、Oracle Corporation によって開発および販売されているリレーショナルデータベース管理システム(RDBMS)であり、世界で最も一般的に使用されている企業データベースシステムの1つです。
- MySQL: MySQL は、データベースの作成と管理に使用される、広く利用されているオープンソースのリレーショナルデータベースマネジメントシステムです。Oracle Corporation によって開発および配布されている MySQL は、使いやすさ、広範なコミュニティサポート、信頼性で知られています。
- 注:MySQL に代わるものとして、Oracle Corporation による MySQL の買収後に MySQL の代替として設計された MariaDB というオープンソースの選択肢があります。
- PostgreSQL:PostgreSQL は、オープンソースのオブジェクトリレーショナルデータベースマネジメントシステムであり、SQL の機能を拡張する高度で機能豊富な機能で知られています。カリフォルニア大学バークレー校の POSTGRES プロジェクトの一環として開発された PostgreSQL は、複雑なデータワークロードを安全に保存およびスケールする ACID 準拠の機能を提供します(PostgreSQL.org 2024)。
- MSSQL:Microsoft SQL Server の略である MSSQL は、Microsoft が開発したリレーショナルデータベースマネジメントシステムです。このデータベースプラットフォームは、大量のトランザクション処理、ビジネスインテリジェンス、アナリティクスアプリケーションをサポートするために、大規模な企業環境で一般的に使用されています。
- SQLite:このリストの他の例とは異なり、SQLite は実際には RDBMS を提供するソフトウェアライブラリです。このリストの他の RDBMS とは異なり、SQLite はサーバーレスであり、設定不要で完結します。これは、SQLite を使用してアプリケーション内に埋め込まれているため、個別のサーバーを必要としないためです。
他のタイプのデータベースでもデータ間の関係を確立できることに注意することが重要です。正規化された表形式のデータベース(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台しかないため、成長の量に制限が生じる可能性がありますが、このスケーリングの選択にはいくつかの理由があります。
- Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)(ACID)コンプライアンス: ACID コンプライアンスは、データベーストランザクションの信頼性、一貫性、データの整合性を保証する一連のプロパティを指します。これは、多くの SQL データベースに政府および業界標準への準拠が義務付けられている銀行および金融情報が含まれているため、非常に重要です。しかし、リソースを水平スケーリングによって増加させる分散システム(例:ネットワークでリンクされた多数のコンピューター)全体で ACID コンプライアンスを維持することは、垂直スケーリングされた1台のコンピューターおよび1台のサーバーと比較すると、より困難です。
- 注:分散されたシステム NoSQL データベースの中には、MongoDB Atlas のように、ACID コンプライアンスを維持できるものもあります。
- トランザクションの管理:SQL データベースは、データの整合性とデータベースの整合性を維持するために、トランザクション管理メカニズムを採用しています。分散データベース環境で複数のノードにまたがる同時トランザクションを管理すると、複雑さとリソース使用量が増加し、データの整合性とデータベース全体のパフォーマンスの両方に影響を与える可能性があります。水平拡張を利用した場合、これらの問題が発生する可能性があります。
- スキーマの硬直性:SQL データベースは、データの取り込みに硬直的で事前定義されたスキーマを採用しています。これは単一のコンピューター/サーバー環境では簡単に維持できますが、水平拡張を伴う分散されたシステムを採用すると、複雑さが増します。具体的には、各ノードで異なるスキーマバージョンが使用される可能性があり、管理のオーバーヘッドが増加し、追加のデータ整合性の問題が発生する可能性があります。
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)
- スマートシティシステム(例:信号機の操作)
- 気象情報の収集

