アダム:
常にテクノロジースタックを拡張し、新しいテクノロジーを学習してください。
ポータル:
MongoDB ドキュメント--アーキテクチャ システム_Yidancheng ブログ-CSDN ブログ
MongoDB ドキュメント - 基本的な使用方法 -クライアント (dos ウィンドウ)/視覚化ツールで MongoDB の基本ステートメントを 使用する 正規表現を使用して検索する
基本的な考え方
MongoDB 中国語マニュアル | 公式ドキュメント中国語版 - MongoDB-CN-Manual
mongdb はドキュメント データベースです
MongoDB のレコードはドキュメントであり、フィールドと値のペアで構成されるデータ構造です。MongoDB ドキュメントは JSON オブジェクトに似ています。フィールド値には、他のドキュメント、配列、ドキュメントの配列を含めることができます。
文書データベース
ドキュメント データベースは、ドキュメント、テキスト、半構造化データなどの非構造化データを保存および管理するために設計されたデータベース モデルです。従来のリレーショナル データベースと比較して、ドキュメント データベースは、データを柔軟なドキュメントのコレクションに編成することにより、優れた柔軟性とスケーラビリティを提供します。
ドキュメント データベースでは、データは JSON または BSON に似たドキュメント形式で保存され、各ドキュメントは異なる構造とフィールドを持つことができます。このため、ドキュメント データベースは、動的データや半構造化データを処理するアプリケーション、または頻繁にスキーマ変更を必要とするアプリケーションに適しています。
もう 1 つの重要な概念は、ドキュメント データベースのクエリ可能性です。ドキュメント データベースは、開発者が保存されたドキュメント データをオンデマンドで取得および操作できるようにする強力で柔軟なクエリ機能を提供します。これらのクエリは、MongoDB のクエリ言語などの構造化クエリ言語を使用するか、API を通じてプログラムできます。
全体として、ドキュメント データベースは、柔軟性を維持しながら非構造化データを保存する必要があるアプリケーションに、非常に柔軟なストレージおよびクエリ ソリューションを提供します。
ドキュメントを使用する利点:
-
ドキュメント (つまり、オブジェクト) は、多くのプログラミング言語の組み込みデータ型に対応します。
-
埋め込みドキュメントと配列により、コストのかかる結合の必要性が軽減されます。
-
動的スキーマは流暢なポリモーフィズムをサポートします。
JSON (JavaScript Object Notation) と BSON (Binary JSON) はどちらも構造化データを表す形式であり、ドキュメント データベース内のドキュメントの保存によく使用されます。
JSON は、理解しやすく、使いやすい軽量のデータ交換形式です。人間が判読できるテキスト形式を使用して、キーと値のペアの形式でデータを表します。JSON ドキュメントは、ネストされたキーと値のペアで構成され、文字列、数値、ブール値、配列、ネストされたオブジェクトなどのデータ型を含めることができます。JSON 形式は、単純なデータ構造と基本的なデータ交換に適しています。
BSON は JSON のバイナリ表現であり、より高い効率とよりコンパクトなストレージを提供するように設計されています。BSON は、バイナリ エンコーディングを使用して、JSON ドキュメントのキーと値のペアをバイナリ形式で表します。JSON と比較して、BSON 形式のストレージはよりコンパクトであり、ストレージ容量とデータ送信要件を削減しながら、より高い読み取りおよび書き込みパフォーマンスを提供します。
BSON でサポートされるデータ型には、文字列、整数、浮動小数点数、日時、ブール値、配列、ネストされたドキュメント オブジェクトなどが含まれます。正規表現、JavaScript コード、バイナリ データなどの特殊な型を表すこともできます。BSON は、タイムスタンプ、最小値、最大値など、より複雑なデータ構造と関数をサポートするデータ型の拡張機能も提供します。
BSON はバイナリ表現であるため、データの保存と転送がより効率的であり、ドキュメント データベースの要件により適しています。したがって、BSON は、MongoDB などの多くのドキュメント データベースで一般的に使用されるドキュメント ストレージ形式です。
以下は bson 形式の例です
\x16\x00\x00\x00 // 整个文档的大小
\x02 // 数据类型为字符串
name\x00 // 字段名
\x0C\x00\x00\x00John\x00 // 字段值为字符串 "John"
\x10 // 数据类型为整数
age\x00 // 字段名
\x1E\x00\x00\x00 // 字段值为整数 30
\x00 // 数据类型为结束符
コレクション/ビュー/オンデマンドのマテリアライズド ビュー
MongoDB はドキュメントをコレクションに保存します。コレクションはリレーショナル データベースのテーブルに似ています。
コレクションに加えて、MongoDB は以下もサポートします。
-
読み取り専用ビュー(MongoDB 3.4 以降)
-
オンデマンドの実体化ビュー(MongoDB 4.2 以降)。
mongdb のコレクション
データベースとコレクション - MongoDB-CN-マニュアル
MongoDB では、コレクションはドキュメントのグループであり、リレーショナル データベースのテーブルと似ています。コレクションはデータベース内に存在しますが、コレクションには固定された構造がありません。つまり、コレクション内のドキュメントは異なるフィールドを持つことができます。
コレクションには次の主な特徴があります。
- コレクションはデータベース内に存在し、データベースには複数のコレクションを含めることができます。
- コレクションはリレーショナル データベースのテーブルに似ていますが、コレクションには固定された構造がありません。ドキュメントごとに異なるフィールドを含めることができます。
- コレクション内の各ドキュメントには、それを一意に識別するための主キー _id があります。
- コレクションは名前で識別でき、ドキュメントが最初に保存されるときに自動的に作成されます。
- コレクションには、任意の数のドキュメントを保存できます。
- コレクションではスキーマが強制されないため、同じコレクション内のドキュメントに異なるフィールドが存在する可能性があります。
- コレクションはデータベースから権限管理を継承します。
mongdb の読み取り専用ビュー
読み取り専用ビューを使用するビジネス シナリオ
- データの分離: 場合によっては、必要なデータのみにアクセスでき、他の人のデータを変更または削除できないように、さまざまなユーザーまたはアプリケーションを分離する必要があります。読み取り専用ビューは、データの分離を実現し、データのセキュリティと整合性を保護するのに役立ちます。
- データ監査: 読み取り専用ビューは、データ監査、つまりデータのレビューと検証に使用できます。読み取り専用ビューを使用すると、データを簡単に表示できますが、データを変更または削除することはできないため、データの整合性と正確性が保証されます。
- データ共有: 読み取り専用ビューはデータ共有にも使用でき、さまざまなユーザーまたはアプリケーションがデータを共有できますが、データの変更や削除はできません。このようにして、データのセキュリティと整合性を確保しながら、より多くの人がデータに簡単にアクセスできるようにすることができます。
mongdb のオンデマンドのマテリアライズド ビュー
オンデマンド マテリアライズド ビューとも呼ばれ、MongoDB4.2 の最も強力な新機能の 1 つです。
オンデマンドの実体化ビューは、MongoDB の特別な読み取り専用コレクションであり、ユーザーのクエリ要件に従ってビューを動的に実体化します。従来の読み取り専用ビューとは異なり、オンデマンド マテリアライズド ビューは事前にビューを作成しませんが、クエリごとにリアルタイムで作成され、クエリ条件に基づいてデータをフィルタリングします。
オンデマンドのマテリアライズド ビューは、データのクエリが必要な場合にのみビューが作成され、適格なデータがフィルターで除外されるため、ストレージ領域とコンピューティング リソースの使用を効果的に削減できます。さらに、オンデマンドのマテリアライズド ビューは固定ビューに制限されず、より柔軟にデータをフィルタリングできるため、クエリのパフォーマンスも向上します。
MongoDB では、ステージを使用してオンデマンドのマテリアライズド ビューを$merge
作成できます。$merge
ステージでは、コレクションを完全に置き換えるのではなく、パイプライン結果のコレクションを既存のコレクションにマージできます。この機能により、オンデマンドでビューを実体化できるようになります。パイプラインにステージを追加することで$merge
、集計結果を既存のコレクションに書き込み、必要に応じてビューを動的にインスタンス化できます。
オンデマンドのマテリアライズド ビューは、データを動的にフィルタリングし、クエリ条件に基づいてリアルタイムでビューを生成する必要がある場合など、場合によっては非常に役立ちます。オンデマンドのマテリアライズド ビューを使用することで、データをより柔軟に処理し、データのセキュリティと整合性を確保できます。
横展開
MongoDB は、そのコア機能の一部として水平スケーラビリティを提供します。
-
シャーディングは、マシンのクラスター全体にデータを分散します。
-
3.4 以降、MongoDB はシャード キーに基づくデータ領域の作成をサポートします。バランスの取れたクラスターでは、MongoDB はゾーン カバレッジの読み取りと書き込みをゾーン内のシャードのみに指示します。詳細については、「リージョン」の章を参照してください。
複数のストレージエンジンをサポート
MongoDB は複数のストレージ エンジンをサポートします。
-
WiredTiger ストレージ エンジン(保存時の暗号化のサポートを含む)
さらに、MongoDB はプラグ可能なストレージ エンジン API を提供し、サードパーティが MongoDB 用のストレージ エンジンを開発できるようにします。
元のリンク: MongoDB の概要 — MongoDB マニュアル
使用するシーン
MongoDB は、パフォーマンス、拡張性、使いやすさに優れたドキュメントベースのデータベースであり、さまざまなシナリオに適しています。MongoDB の使用シナリオをいくつか示します。
- リアルタイム データ分析: MongoDB は、大量のデータを迅速に処理し、ネットワーク分析、ビジネス インテリジェンス、市場分析などのシナリオに適したリアルタイム データ分析機能を提供します。
- ゲーム開発: MongoDB は、ゲームのユーザー情報、装備、ポイント、その他のデータの保存に適しており、ゲーム開発効率を向上させるための強力なクエリおよび更新機能を提供します。
- 物流管理: MongoDB は、注文情報、注文状況、物流情報などのデータを保存でき、柔軟なクエリおよび更新機能を提供して、物流会社の経営効率の向上を支援します。
- ソーシャル ネットワーク: MongoDB は、ユーザー情報、友人サークル情報、地理的位置情報、その他のデータの保存に適しており、ソーシャル ネットワーク アプリケーションに適した強力なクエリおよびデータ分析機能を提供します。
- モノのインターネット: MongoDB は、スマート デバイス情報やデバイスから報告されたログ情報などのデータを保存でき、モノのインターネット アプリケーションに適したリアルタイムのクエリおよび分析機能を提供します。
- ライブビデオ: MongoDB はユーザー情報やギフト情報などのデータを保存でき、ライブビデオアプリケーションに適した高い拡張性とリアルタイムクエリ機能を提供します。
つまり、MongoDB は、大量のデータを処理し、高いスケーラビリティとリアルタイム クエリを必要とするシナリオに適しており、効率的なデータ ストレージ、クエリ、分析機能を提供して、企業のビジネス効率と競争力の向上を支援できます。
mongdb を使用する理由
MongoDB は、次の利点があるため、広く使用されています。
- ドキュメント型データベース構造: MongoDB はドキュメント型データベース構造を採用しており、テキスト、数値、日付、バイナリ データなどのさまざまな種類のデータを保存でき、データ ストレージに固定構造は必要なく、データを保存できます。柔軟に挿入および更新できます。
- 高パフォーマンス: MongoDB はメモリ マップト ファイルを使用してデータをメモリに保存し、読み取りおよび書き込みの速度とパフォーマンスを向上させます。
- 高いスケーラビリティ: MongoDB は断片化されたクラスターをサポートしており、複数のノードにデータを分散してシステムのスケーラビリティと信頼性を向上させることができます。
- 豊富なクエリ言語: MongoDB は、データのクエリとフィルターを簡単に行うための豊富なクエリ言語をサポートしています。
- 使いやすさ: MongoDB は、さまざまなアプリケーションと簡単に統合できる、主流のクライアント ライブラリと言語ドライバーを豊富に提供します。
- コミュニティ サポート: MongoDB には、多数の問題解決策とツールを提供する活発なコミュニティがあり、開発者が技術的な問題を解決しやすくなっています。
要約すると、MongoDB はドキュメント データベース構造、高パフォーマンス、高スケーラビリティ、豊富なクエリ言語、使いやすさ、コミュニティ サポートという利点を備えており、広く使用されているデータベースとなっています。
mongdbの類似製品の比較
他のデータベース製品と比較すると、MongoDB には次の特徴があります。
- ドキュメント型データベース構造: MongoDB はドキュメント型データベース構造を採用しており、テキスト、数値、日付、バイナリ データなどのさまざまな種類のデータを保存でき、データ ストレージに固定構造は必要なく、データを保存できます。柔軟に挿入および更新できます。
- 高パフォーマンス: MongoDB はメモリ マップト ファイルを使用してデータをメモリに保存し、読み取りおよび書き込みの速度とパフォーマンスを向上させます。
- 高いスケーラビリティ: MongoDB は断片化されたクラスターをサポートしており、複数のノードにデータを分散してシステムのスケーラビリティと信頼性を向上させることができます。
- 豊富なクエリ言語: MongoDB は、データのクエリとフィルターを簡単に行うための豊富なクエリ言語をサポートしています。
- 使いやすさ: MongoDB は、さまざまなアプリケーションと簡単に統合できる、主流のクライアント ライブラリと言語ドライバーを豊富に提供します。
他のデータベース製品と比較して、MongoDB はドキュメント データベースの構造、高性能、拡張性、豊富なクエリ言語、使いやすさの点で優れています。ただし、各データベース製品には適用可能なシナリオと利点があり、特定のアプリケーション要件に応じて最適なデータベース製品を選択する必要があります。
Cassandra、CouchDB、Redis、Riak、Hbase の類似製品
Cassandra、CouchDB、Redis、Riak、HBase はすべて人気のあるデータベース製品であり、それぞれに独自の特徴と長所と短所があります。
これらの製品と MongoDB の比較、および長所と短所の概要を以下に示します。
- Cassandra: Cassandra は拡張性が高く、大規模なデータを処理でき、強力な書き込みおよび読み取りパフォーマンスを提供します。その分散型の性質により、複数のノード間でのデータ複製と障害回復が容易になります。ただし、Cassandra の使用は比較的複雑で、一定レベルのテクノロジーが必要です。
- CouchDB: CouchDB は、優れた耐障害性と信頼性を備えた拡張性の高いデータベースです。ドキュメントを使用してデータを保存し、全文検索と添付ファイルの処理をサポートします。CouchDB は比較的簡単に使用できますが、パフォーマンスが比較的低く、高負荷のアプリケーションには適していない可能性があります。
- Redis: Redis は、非常に高い読み取りおよび書き込みパフォーマンスと高速なデータ アクセス速度を備えたインメモリ データベースです。文字列、ハッシュ、リスト、セット、ソートされたセットなどのさまざまなデータ構造をサポートします。ただし、Redis のストレージ容量はメモリによって制限されており、大量のデータの保存には適していません。
- Riak: Riak は、大規模なデータを処理できる拡張性の高い分散データベースです。耐障害性と信頼性が高く、複数のデータ型とクエリ言語をサポートしています。Riak は比較的簡単に使用できますが、パフォーマンスが比較的低く、高負荷のアプリケーションには適していない可能性があります。
- HBase: HBase は、高いパフォーマンスとスケーラビリティを備えた分散キーバリュー ストア データベースです。大量のデータを処理でき、複数のデータ型とクエリ言語をサポートします。ただし、HBase の使用は比較的複雑であり、一定レベルのテクノロジーが必要です。
対照的に、MongoDB には、ドキュメントベースのデータベース構造、高パフォーマンス、高スケーラビリティ、豊富なクエリ言語、および使いやすさという利点があります。ただし、各データベース製品には適用可能なシナリオと利点があり、特定のアプリケーション要件に応じて最適なデータベース製品を選択する必要があります。