sql >> データベース >  >> NoSQL >> MongoDB

MongoDBとは何ですか?どのように機能しますか?

    MongoDBは、最も一般的で広く使用されているNoSQLデータベースです。これは、オープンソースのドキュメント指向DBです。 NoSQLは、「非リレーショナル」を指すために使用されます。これは、MongoDBデータベースがRDBMSのような表形式の関係に基づいていないことを意味します。これは、別個のストレージおよびデータ取得メカニズムを提供するためです。

    MongoDBで採用されているストレージ形式は、BSONと呼ばれます。データベースはMongoDBInc.によって管理されており、Server-Side Public License(SSPL)の下でライセンスされています。

    以下は、単純なMongoDBドキュメント構造です。

    {
      title: 'FossLinux',
      by: 'Abraham',
      url: 'https://www.fosslinux.com',
      type: 'NoSQL'
    }

    どのように機能しますか?

    MongoDBは、次の2つのレイヤーで機能します。

    • データレイヤー
    • アプリケーション層

    アプリケーション層は通常、最終抽象化層と呼ばれます。 バックエンドの2つの部分で構成されています サーバー部分、およびフロントエンド ユーザーインターフェイスセクション。フロントエンドセクションは、開発者がMongoDBを使用して、モバイルまたはWebと対話するための目に見える場所です。バックエンドセクションには、主にサーバー側のロジックを実行するために使用されるサーバーが含まれます。さらに、サーバーセクションには、クエリを使用したMongoDBサーバーの対話を支援するドライバーとmongoシェルが含まれています。

    クエリは、データレイヤーにあるサーバーに送信されます。次に、MongoDBサーバーはクエリをストレージエンジンに渡し、そこで対応するデータファイルの読み取りおよび書き込み操作が実行されます。ストレージエンジンの主な目的は、データを管理することです。

    注: MongoDBサーバーは、書き込みおよび読み取り操作を実行しません。

    以下の画像は、MongoDBがどのように機能するかを示しています。

    MongoDBの主な機能

    その主な機能は次のとおりです。

    1。インデックス作成

    インデックスは、データベースの検索パフォーマンスと速度を向上させることを目的としています。このデータベースのドキュメントのフィールドは、プライマリおよびセカンダリのインデックス/インデックスでインデックスを付けることができます。インデックスを作成しないと、データベース内のすべてのドキュメントをスキャンして、クエリに一致するドキュメントを選択する必要があります。これは、非効率になる傾向があります。したがって、効率的なドキュメント検索にはインデックスが必要であり、MongoDBはそれを使用して大規模なデータトラクトを簡潔に処理します。

    MongoDBを使用すると、ユーザーは、セカンダリインデックスとプライマリインデックスの両方でインデックスが作成されたフィールドにインデックスを付けることができます。これにより、クエリ検索がはるかに高速になり、全体的なパフォーマンスが向上します。

    2。負荷分散

    MongoDBはデータを複製して、ハードウェア障害が発生した場合でもシステムを稼働させ続けます。さらに、このプロセスにより、MongoDBを複数のサーバーで実行できるため、負荷が分散されます。

    3。アドホッククエリ

    MongoDBは、フィールド、範囲クエリ、および式の検索を定期的にサポートしています。これらのクエリは、ドキュメントの特定のフィールドを返し、ユーザー定義のJavaScript関数も含みます。クエリは、特定のサイズの結果のランダムなサンプルを返すように構成することもできます。

    4。レプリケーション

    MongoDBが提供するレプリカセットは、2つ以上のデータのコピーで構成されています。これらのセットは、いつでもプライマリレプリカまたはセカンダリレプリカとして機能する可能性があります。プライマリレプリカセットは読み取りと書き込みを実行し、セカンダリセットは組み込みのレプリケーションを使用してプライマリレプリカのデータのコピーを維持します。プライマリレプリカに障害が発生した場合、レプリカセットは自動的に選択プロセスを実行して、どのセカンダリがプライマリになるかを決定します。セカンダリレプリカはオプションで読み取り操作を提供できますが、データは結果整合性があります。

    5。ファイルストレージ

    このデータベースは、ファイル操作とコンテンツの機能を開発者に公開します。 Mongo DBは、グリッドファイルシステム(GridFS)と呼ばれるファイルシステムとして使用できます。この関数は、ファイルをパーツに分割し、各パーツを個別のドキュメントとして保存します。

    6。集約

    効率的な使いやすさのために、MongoDBは集約フレームワークを提供します。この機能により、開発者はプロセスデータをバッチ処理し、グループデータに対してさまざまな操作を実行した後でも単一の結果を得ることができます。 MongoDBが集約フレームワークを提供する方法は3つあります。

    • Map-reduce関数
    • 集約パイプライン
    • 単一目的の集約。

    下の画像をチェックして、MongoDBでの集計の仕組みを垣間見ることができます:

    7。スキーマレスデータベース

    スキーマレス機能は、MongoDBにはるかに高い柔軟性を提供します。 1つのコレクションがMongoDBに異なるドキュメントを保持できます。スキーマがないため、同じコレクションに他のコンテンツ、フィールド、サイズの個別のドキュメントを保存できます。

    8。 GridFS

    これは、MongoDBでファイルを保存および取得するために使用される機能です。ドキュメントをチャンクと呼ばれるいくつかの部分に分割し、それらを異なるドキュメントに保持します。最後のチャンクを除くすべてのチャンクのデフォルトのストレージサイズは約255KBです。 GridFSは、16MBを超えるファイルに非常に役立ちます。

    注: GridFSがファイルを照会されると、元のファイルを形成するために必要なすべての個別のチャンクをアセンブルします。以下は、簡略化されたGridFSの作業方法です。

    MongoDBコンポーネント

    コアMongoDBコンポーネントとその使用法は次のとおりです。

    1. コレクション– それらはMongoDBドキュメントのセットです。それらのRDBMSの対応物はテーブルです。コレクションは構造を強制しないことを理解することが重要です。コレクションは常に単一のDB内に存在します。
    2. ドキュメント– これは、BSON形式で保存されたデータのコレクションです。そのRDBMSの対応物はRowです。 MongoDBのレコードは、ドキュメントと呼ばれます。 MongoDBのドキュメントには、フィールド名とそれに対応する値が含まれています。
    3. フィールド– これは、フィールドとしての値と値のペアを含むMongoDBドキュメント内の単一の要素です。リレーショナルデータベースでは、フィールドは列に類似しています。フィールドは、簡単な用語でドキュメント内の名前と値のペアとして参照できます。
    4. _id – すべてのMongoDBドキュメントにはこのフィールドが必要です。 _idフィールドは、リレーショナルデータベースの主キーと同等と見なすことができます。これは、MongoDBドキュメント内の一意のインスタンスまたは値を表します。 _idフィールドを使用せずにMongoDBで意図的にドキュメントを作成すると、自動的に生成されます。
    5. カーソル– これは、クエリの設定結果を示すポインタです。カーソルを使用して、クライアントは結果を取得できます。
    6. JSON – これはJavaScript表記です。これはプレーンテキストであり、構造化データを表現するために使用される人間が読める形式です。何千ものプログラミング言語がJSONをサポートしています。
    7. データベース– データベースがテーブルコンテナであるRDBMSのように、MongoDBでは、データベースはコレクションコンテナです。すべてのデータベースには、ファイルシステム上に独自のファイルセットが含まれています。したがって、MongoDBサーバーは複数のデータベースを保存できます。

    MongoDBエディション

    MongoDBは、さまざまなエディションでリリースされています。

    • MongoDBコミュニティサーバー– これは、Linux、Windows、およびmacOSユーザーが無料で利用できるMongoDBのオープンソースバージョンです。
    • MongoDB Enterpriseサーバー– これはMongoDBの商用バージョンであり、MongoDBEnterpriseAdvancedサブスクリプションパッケージの一部として見つけることができます。
    • MongoDB Atlas – 一般にMongoDBクラウドと呼ばれます。 MongoDB Atlasは、Microsoft Azure、Google Cloud、およびAWSプラットフォームで完全に実行および管理されるオンデマンドのMongoDBパッケージです。これは、クラウドでホストされているMongoDBEnterpriseバージョンです。 Atlasエディションには、すべてのMongoDBEnterpriseサーバー機能などが含まれています。したがって、これは、MongoDBAtlasが他のすべてのMongoDBエディションよりもはるかに高度であることを意味します。

    なぜMongoDBを使用する必要があるのですか?

    1. リレーショナルデータベースには構造化データが含まれていますが、非構造化データについてはどうでしょうか。ユーザーは、タイプを宣言しなくても、さまざまな形式のランダムデータをMongoDBに追加できます。
    2. クラウドベースの環境でのMongoDBの可用性と柔軟性のおかげで、ユーザーは組み込みのシャーディングメソッドを使用して大量のデータを読み込むことができます。これにより、データが分離され、多数のサーバーに便利に分散されます。
    3. MongoDBの動的スキーマにより、ユーザーは新しいことをすばやく実験して学ぶことができます。何でもMongoDBにすばやく安価に組み込むことができます。
    4. 高度な手順を必要とせずに、ロケーションベースのデータを簡単に収集できます。
    5. 何百万ものリンクされたデバイスがインターネット上で定期的にデータを生成するため、データの抽出と処理が困難になりますが、MongoDBは単一のデータベース内でデータを生成できます。
    6. MongoDBは、CMSベースのWebサイトを強化するために、複数のソースからの幅広いデータを保持できます。この情報には、ツイート、コメント、マルチメディアメッセージ、およびその他の種類の情報が含まれます。
    7. モバイルアプリ開発の優れたコンパニオンです。
    8. リアルタイムのクライアント分析をユーザーに提供し、待望のカスタマイズされたエクスペリエンスを提供できます。
    9. これは低コストのデータベースです。小規模または小規模のビジネスの場合、管理とセットアップが簡単なため、MongoDBの方が優れたストレージオプションです。
    10. MongoDBの強力な検索エンジンは、データの出所をユーザーに知らせます。

    MongoDBの長所と短所

    利点

    1. 大量のデータがあり、負荷分散のために多数のサーバーにデータを分散させたい場合、MongoDBはリレーショナルデータベースよりもはるかに優れています。
    2. MongoDBでの検索クエリは、アクセスのために単一のサーバーに解釈する必要があるため、より高速です。
    3. 汎用性があります。つまり、MongoDBを利用して非構造化データを保存する必要があります。これは、はるかに簡単な方法だからです。

    デメリット

    1. MongoDBでは、テーブルを組み合わせる方法はありません。したがって、この機能を使用する必要があるたびに手動で行う必要があり、見苦しく時間のかかるコーディングになります。
    2. データの競合が発生する可能性があるため、各ドキュメントのキーを保存する必要があるため、大量のメモリを使用します。
    3. 1つの機能の使用を開始すると、データベース全体がロックされ、同時実行の問題が発生します。
    4. これは自動的には行われません。したがって、ユーザーは操作がトランザクションであることを手動で確認する必要があります。

    MongoDBに関するトップ10のFAQ

    このセクションでは、MongoDBに関するよくある質問のいくつかに対する回答を提供します。よくある質問のほとんどはすでに回答されているので、チェックしてみてください。ここで問題の解決策を見つけることができれば幸いです。

    1。どうすればMongoDBを学ぶことができますか?

    MongoDBを学習する最も簡単で一般的な方法は、MongoDBが開発者向けに提供するオンライントレーニングコースを利用することです。コースは、MongoDBに精通しているMongoDBエキスパートエンジニアによって開発および指導されています。コースは無料で、MongoDBの第一人者になるために知っておく必要のあるすべての側面をカバーしています。ほとんどの専門家はこの方法の使い方を学びました。

    したがって、あなたがそれに従えば、あなたは優れた例外ではありません。オンラインコースは、ユーザーがこの主題についてより深く理解するのに役立つ実際のアプリケーションを提供します。オンライントレーニングは自分のペースで進められます。つまり、オンライントレーニングを習得するのにかかる時間を決定します。さらに、これらのコースは、初心者がMongoDBについてさらに学び、演習するのに役立つ追加の演習です。 MongoDB大学にアクセスして、たくさんの無料コースを取得し、MongoDBを学びましょう。

    2。 MongoDBサーバーは無料で使用できますか?

    はい。 MongoDBサーバーは、使用するパッケージに応じて無料で使用できます。たとえば、コミュニティサーバーにはすべてのユーザーがアクセスできます。ただし、より多くの機能が必要な場合は、MongoDBEnterpriseやAtlasエディションなどの有料バージョンを使用できます。

    3。 MongoDBとリレーショナルデータベースの違いを説明してください。

    MySQL、Oracle、SQL Server、Postgresなどのほとんどのリレーショナルデータベースは、元々(40年以上)前に設計されたアーキテクチャに基づいて構築されています。当時の申請要件は、現代の申請要件とは異なっていました。

    MongoDBは、リレーショナルデータベースとは異なり、分散システムアーキテクチャ上に構築されているため、ユーザーはさまざまなインスタンス間でデータベースをすばやくスケールアウトできます。詳細な分析については、MongoDBとMySQL(リレーショナルデータベース)の違いを確認してください。MongoDBを設計する主な目的は、生産性を向上させることでした。スキーマの柔軟性は、ほとんどのユーザーが探していたものであり、MongoDBが提供する素晴らしい機能の1つです。

    4。どうすればMongoDB商用ライセンスを取得できますか?

    MongoDB商用ライセンスを取得するには、MongoDBEnterpriseAdvancedから購入できます。

    5。データがMongoDBにどのように保存されるか説明してください。

    MongoDBでは、データはJSON形式のデータ構造を使用するBSONドキュメントに保存されます。ドキュメントには複数のフィールドが含まれ、各フィールドには、バイナリデータ、配列、およびサブドキュメントを含む特定のデータ型の値があります。同様の構造を共有するドキュメントは、コレクションとして保存および整理されます。

    6。 MongoDBはどこで実行できますか?

    MongoDBはどこからでもダウンロード、インストール、実行できます。プラットフォームのロックインの自由を完了する限り、どこからでもMongoDBを実行できます。たとえば、MongoDB Atlasバージョンは、従量課金制で動作するAWS、Google Cloud、Azureで完全にカスタマイズおよび管理されたサービスをユーザーに提供します。 MongoDB Ops Managerは、インフラストラクチャでMongoDBを実行するための最良の代替方法の1つです。これにより、チームはMongoDBを簡単かつ迅速に監視、バックアップ、スケーリング、デプロイできます。

    7。 MongoDBが役立つ理由を説明してください。

    MongoDBは、ユーザーがより高速で高品質のアプリケーションをまとめて構築できるようにする3つの主要な設計原則に基づいて構築されています。 3つの主要な設計原則は次のとおりです。

    分散システム設計 ユーザーがインテリジェントに必要な場所にデータを割り当てることができます。
    統一されたエクスペリエンス– ユーザーはどこでも自由に走ることができます。このコア設計の原則により、ベンダーロックインを排除すると同時に、ユーザーがアプリケーションを将来にわたって利用できるようになります。
    ドキュメントデータモデル– この機能は、データを操作するための最良かつ簡単な方法をユーザーに提供します。

    8。いつMongoDBを使用する必要がありますか?

    MongoDBは、分析アプリやその他のさまざまなOLTPアプリで使用できる汎用性の高いNoSQLデータベースです。 MongoDBAtlasとMongoDBServerを使用すると、さまざまなアプリケーションに対応できます。

    9。 MongoDBがクライアントのデータを保護する方法を説明してください。

    MongoDBには、クライアントデータを保護、検出、制御、および防御する広範な機能が含まれています。以下は、クライアントのデータを保護するのに役立つ主要な機能の一部です。

    承認–
    RBAC(ロールベースのアクセス制御)を使用すると、ユーザーは、タスクを実行するために必要なユーザーまたはアプリケーションベースの特権を有効にする詳細なアクセス許可を構成できます。

    監査 セキュリティ管理者がMongoDBのネイティブ監査ログを使用して、特定のデータベースの変更とアクティビティを記録できるようにするため、規制への準拠に不可欠です。

    認証 – MongoDBは、統合されたエンタープライズセキュリティインフラストラクチャの導入とともに、SCRAM-256に基づくデータベースアクセス制御を簡素化する、実行可能なチャレンジレスポンスの堅実なメカニズムを提供します。また、利用できる機能には、Windows Active Directory、x.509証明書、LDAP、およびKerberosがあります。

    どこでも暗号化 –移動中は、MongoDBデータをネットワーク全体で暗号化でき、静止中は、データをディスクまたはバックアップで暗号化できます。最後に、MongoDBデータは、使用中にデータベースで暗号化できます。

    結論

    この記事では、MongoDBに関して知っておく必要のあるすべての側面を包括的にカバーしています。長い間、ユーザーはMongoDBがユーザーに提供する速い生産性を求めてきました。リレーショナルデータベースとは異なり、記事ですでに述べたように、MongoDBはユーザーにデータベースをすばやくスケールアウトする余地を与えます。


    1. nestjs redisマイクロサービスの使用方法は?

    2. MongoDB $ trim

    3. 集約のための構造の生成

    4. 合計数を取得するためにMongoDBで合計を集計するにはどうすればよいですか?