NoSQL という用語は、「Not only SQL」の略です。リレーショナル データベースのようなルールベースのリレーショナル テーブルではなく、非表形式でデータを保存する非リレーショナル データベースを指します。NoSQL データベースは、ドキュメント、Key-Value、ワイドカラム、グラフなど、さまざまな非構造化データをサポートする柔軟なスキーマモデルを使用します。
組織が NoSQL データベースを選ぶ理由として、柔軟性、高パフォーマンス、水平方向のスケーラビリティ、開発の容易さが挙げられます。
Google Cloud の NoSQL データベースである Bigtable、Memorystore、Firestore が、スケーラビリティ、信頼性、頻繁なデータ変更に関して心配することなく、どのようにアプリケーションを強化し、優れたカスタマー エクスペリエンスを提供できるかをご確認ください。
NoSQL データベースには主に 5 つのタイプがあります。
ドキュメント データベースは、ドキュメント指向データベースまたはドキュメント ストアとも呼ばれ、半構造化データの保存とクエリに使用されます。データは、デベロッパーがアプリケーション コードで使用するデータ オブジェクトに似た JSON のようなドキュメントに保存されるため、プライマリ スキーマを参照せずにアプリケーションを簡単に作成、更新できます。ドキュメント データベースは、ブログ プラットフォーム、e コマース、リアルタイム分析、コンテンツ マネジメント システムに最もよく使用されます。
Key-Value データベースは、Key-Value ストアとも呼ばれる、最もシンプルなタイプの NoSQL データベースです。データは「Key-Value」構造で保存されます。この構造では、一意のキーが文字列、数値、ブール値、複合オブジェクトなどの値とペアになります。キーを使用して、関連する値を保存または取得できます。Key-Value ストアは、ウェブ アプリケーションのユーザー設定、ショッピング カート、ユーザー プロファイルに最もよく使用されます。
列指向のデータベース、またはワイドカラム ストア型は、データを行単位で格納して読み取り、一連の列として編成されます。リレーショナル データベースの表形式に似ていますが、ワイドカラム ストア型の列の名前と形式は、単一テーブルの行ごとに異なる場合があります。これは、データベース内の特定の列に対してクエリを実行し、特定の列の値を迅速に集計する必要がある分析のユースケースに最適です。ワイドカラム ストア型は、カタログ、不正行為の検出、レコメンデーション エンジンに最もよく使用されます。
グラフ データベースは、データ要素間の関係に焦点を当てて、データをグラフ内のノードとして整理します。ノード(エッジ)間の接続はファースト クラスの要素として保存されるため、データの関係性をより豊富な表現で表すことができ、保存とナビゲーションがよりシンプルになります。グラフ データベースは、ソーシャル メディア プラットフォーム、予約システム、不正行為検出システム、物流アプリケーションなど、関係をマッピングするシステムで最もよく使用されます。
インメモリ データベースはデータをメモリに保存し、リアルタイム アプリケーションに超低レイテンシを実現します。Redis と Valkey は、インメモリ NoSQL データベースの例です。インメモリ データベースは、キャッシュ保存、メッセージング、ストリーミング、リアルタイム分析に最もよく使用されます。
NoSQL の機能は、選択したデータベースによって異なります。ただし、一般的には次のような特徴が共通しています。
このような機能により、非リレーショナル データベースは、大規模、信頼性、高可用性、そして頻繁なデータ変更を必要とするアプリケーションに最適です。
柔軟なデータモデルとスキーマ
NoSQL データベースはさまざまな種類のデータを保存し、柔軟なスキーマを提供するので、半構造化データと非構造化データに最適です。新しいタイプのデータに簡単に適応し、変化するデータ要件に合わせてスキーマを進化させることができます。
アジャイル開発
NoSQL の柔軟性は、アジャイルなアプリ開発を補完します。NoSQL デー���ベースはさまざまなデータをネイティブ形式で保存でき、データモデルを適宜定義して適応できるため、デベロッパーは迅速に作業を開始し、データ変換に費やす時間を減らして、迅速に反復処理できます。
スケーラビリティ
リレーショナル データベースとは異なり、NoSQL データベースでは、データやトラフィックの増加に合わせて(ほとんどの場合、ゼロ ダウンタイムで)容量を簡単に増やすことができます。クラウドベースのデータベースは、オンデマンドでスケーリングすることがさらに容易になり、自動スケーリング機能と柔軟な料金モデルが提供されます。
大容量のデータ ストレージ
NoSQL は大規模で複雑なデータセットを処理するように設計されているため、ビッグデータ、リアルタイム分析、IoT のユースケースに導入できます。
高可用性
NoSQL データ アーキテクチャは分散型で、単一障害点がありません。また、レプリケーションが容易なため、計画外の停止や中断に対する耐性が高まります。
高速なクエリ
データの重複を減らすために正規化されるリレーショナル データベースとは異なり、NoSQL は高速なクエリに最適化されています。通常、複雑な結合は必要ありません。つまり、データベース クエリにより、結果がより迅速に返されます。
近年、NoSQL データベースの人気が高まっていますが、リレーショナル データベースと比べて使用するデメリットがいくつかあります。これらはまだ比較的新しく、リレーショナル データベースほど成熟していない場合があります。全体的に、NoSQL はデベロッパーの専門知識、利用できるツールやプロダクト、文書化されていない問題が発生した場合のサポートが少ないです。
また、NoSQL には SQL のような共通言語がありません。データベースごとに独自の言語を使用してデータのクエリや管理を行うこともあります。これらの言語はよく似ていますが、SQL 標準と完全には互換性がありません。
多くの場合、NoSQL データベースには、SQL データベースで標準とされているデータの完全性対策や高レベルのデータ整合性がありません。ただし、ACID トランザクションをサポートしている Firestore や Mongo Atlas などがあります。
NoSQL データベースは通常、複雑なクエリや結合を実行するアプリケーションには適していません。複数のノードにまたがって���ンデックスとクエリを管理すると処理に時間がかかり、一貫した結果が返されない可能性があります。
それでも、ミリ秒単位のわずかな遅延が問題にならないほとんどの NoSQL ユースケースには、結果整合性モデルで十分です。多くのアプリケーションでは、グローバルな強整合性のニーズよりも、高可用性と高速性がはるかに重要です。
アプリケーションによって非リレーショナル NoSQL データベースを使用したり、リレーショナル SQL データベースを使用したりするのはなぜでしょうか。適切なデータベースの選択は、多くの場合、ユースケースに左右されます。SQL と NoSQL の使い分け
SQL データベースは、構造化されたリレーショナル データや複雑なクエリの管理に優れています。SQL データベースは ACID に準拠しているため、トランザクション情報に適しています。
SQL のユースケース:
NoSQL データベースは、高度にパーソナライズされたエクスペリエンスを提供するために、グローバルに分散された多数のユーザーを必要とするユースケースに優れています。このようなインタラクティブなアプリケーションは、NoSQL データベースのアジリティを最も効果的に活用できます。
NoSQL データベースは高可用性を優先し、一貫したパフォーマンスを提供し、ダウンタイムなしで迅速にスケールアウトします。また、さまざまな種類のデータを大量に処理できます。
このような NoSQL データベースの機能により、非リレーショナル データベースは、大規模で、信頼性、高可用性を必要とするアプリケーションに最適です。
NoSQL の一般的な用途は次のとおりです。