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

一般的なMongoDBインタビューの質問

    上記の主題の面接対象者として首尾よく最終候補者に選ばれた場合は、この記事ガイドに記載されているよくある質問のいくつかを確認することをお勧めします。 MongoDBインタビューの質問は、読者がMongoDBインタビュー中に遭遇する可能性のある質問の性質と形式を理解できるように意図的に設計されています。

    ただし、注意すべき重要な点は、優れた面接官が面接中に特定の質問をすることはほとんどないということです。代わりに、彼らは時々専門的で予測不可能なままでいる傾向があります。

    注: 面接の前に、常に主題の基本的な概念を持ってください。これは、面接官または面接委員会が提起するほとんどの質問に答えるのに役立ちます。

    この記事ガイドでは、MongoDBインタビューでよくある質問のいくつかを紹介します。したがって、詳細については、しばらくお待ちください。

    一般的なMongoDBインタビューの質問

    以下は、MongoDBの面接で最もよく聞かれる質問の一部です。

    1。 MongoDBとは何ですか?

    これは、高可用性、高性能、および容易なスケーラビリティを提供するドキュメント指向データベースです。 MongoDBはNoSQLデータベースです。

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

    NoSQLデータベースは、表形式のリレーション(リレーショナルデータベースで使用されるもの)の使用以外のすべての方法でモデル化されたデータを取得および保存する方法を提供するのに役立ちます。さまざまな種類のNoSQLデータベースは次のとおりです。

    • キー値
    • 列指向
    • ドキュメント指向
    • グラフ

    3。 MongoDBとはどのタイプのNoSQLデータベースですか?

    MongoDBは、ドキュメント指向のデータベースであるため、BSONドキュメントの形式でデータをストックします。これらのBSONドキュメントはコレクションに保存されます。

    4。シャーディングとそれがMongoDBで何を意味するのか説明してください。

    シャーディングは、MongoDBで複数のマシンにデータを保存するために使用される手法です。 MongoDBは、シャーディングを使用して、大規模なデータセットのデプロイと高スループットの操作をサポートします。シャーディングは、急速なデータ増加の基準と要求を満たすためのMongoDBアプローチです。 DBまたは検索エンジンの水平方向のデータパーティションは、データベースシャードまたはシャードと呼ばれます。

    5。 MongoDBの主な機能のいくつかを挙げてください

    • 表現力豊かなクエリ言語
    • 非常に機敏なスケーラブルなデータベース
    • ドキュメント形式の柔軟なデータモデル
    • 他の従来のデータベースよりもはるかに高速です。

    6。より高いレベルでCouchDBとMongoDBを比較する

    CouchDBとMongoDBはどちらもドキュメント指向のデータベースですが、MongoDBは、クエリにダイナミズムと優れたパフォーマンスを必要とする主要なアプリケーションにとって、依然として優れた選択肢として際立っています。ただし、これは、CouchDBが効率的でないことを意味するものではありません。これは、事前定義されたクエリを時々変更して使用するアプリケーションにも使用されるためです。

    7。 MongoDBにデータを追加するにはどうすればよいですか?

    「inserts」構文ステートメントは、MongoDBにデータを追加するために使用されます。たとえば、単一のドキュメントを挿入するには、以下のコレクション構文を使用します。

    insertOne

    > db.fosslinux.insertOne({“ title”:“なぜ私はFossを愛しているのか”})

    コレクションに多数のドキュメントを挿入するには、次の構文を使用します。

    insertmany

    この方法では、データベース上のドキュメントに配列を渡すことができます。

    8。 MongoDBのドキュメントを削除するにはどうすればよいですか?

    CRUD APIは、以下を提供するため、削除の目的でMongoDBで使用されます。

    deleteOne
    deleteMany

    それぞれ単一ファイルと多数ファイルを削除するために使用できる構文。提供されている構文は、最初のパラメーターとしてドキュメントを除外するのに役立ちます。フィルタは、削除するように設定されたドキュメントと照合するために設定された基準を指定するため、非常に重要です。

    例:

    > db.fosslinux.deleteOne({"_id" : 4})

    9。 MongoDBでデータをクエリする方法

    テーブル内のデータをクエリすると、コレクション内のドキュメントのサブセットを返すのに役立ちます(ドキュメントがないものからコレクションに存在するすべてのドキュメントまで)。 「検索 」メソッドは、MongoDBでクエリを実行するために使用されます。 findステートメントの後に提供される最初の引数は、計算または返されるドキュメントを決定します。

    例:

    > db.users.find({"age" : 24})

    10。 MongoDBで設定されたレプリカとは何かを説明する

    レプリカセットは、同様のデータセットをホストするmongoグループインスタンスと呼ぶことができます。レプリカセットでは、一方のノードがプライマリで、もう一方のノードがセカンダリです。すべてのデータはプライマリノードからセカンダリノードに複製されます。

    11。 MongoDBでレプリケーションはどのように機能しますか?

    レプリケーションは、異なるサーバー間でデータを同期することを伴うプロセスです。レプリケーションは、データの可用性を高めながら冗長性を低下させるのに役立つため、重要です。レプリケーションは、異なるデータベースサーバーで複数のコピーを利用できるために、データベースが単一のサーバーを失うのを防ぐのに役立つため、重要です。また、レプリケーションにより、ユーザーはサービスの中断やハードウェア障害から回復できます。

    12。 MongoDBでのプロファイラーの役割を強調する

    MongoDBのデータベースプロファイラーは、データベースに対して実行されたすべての操作の特徴的なパフォーマンスを示します。予想よりも遅いプロファイラーのクエリを見つけるには、プロファイラーを使用できます。

    13。古いファイルをMongoDBのmoveChunkディレクトリに移動する方法を簡単に説明しますか?

    はい、古いファイルはmoveChunkディレクトリに移動できます。これは、通常のシャード操作中に実行できます。バックアップとして作成されたファイルは、操作が完了したときに削除できます。古いファイルをmoveChunkディレクトリに移動すると、スペースの作成と節約に役立ちます。

    14。安全なバックアップを作成するためにMongoDBで使用されている機能はどれですか?

    MongoDBでは、安全なバックアップを作成する際にジャーナリングが使用されます。

    15。 MongoDBのインデックスとは何ですか?

    MongoDBのインデックスは、クエリの実行をサポートします。 MongoDBにインデックスが存在しない場合は、コレクションスキャンを実行して、コレクション内のすべてのドキュメントをスキャンし、一致するクエリステートメントを含むすべてのドキュメントを選択する必要があります。

    16。 MongoDBの代替に名前を付ける

    以下は、MongoDBの代替案の一部です。

    • CouchDB
    • カサンドラ
    • Redis
    • Hbase
    • リアク

    17。 MongoDBは大量のランダムアクセスメモリ(RAM)を必要としますか?

    いいえ、これはMongoDBの楽しいところです。他のプロセス要件に基づいてRAMを動的に割り当て解除および割り当てるため、実行に大量のRAMは必要ありません。

    18。デフォルトでは、MongoDBによって新しいコレクション用にいくつのインデックスが作成されますか?

    MongoDBは_idコレクションを作成します デフォルトでは、すべての新しいコレクションに適用されます。

    19。 MongoDBでカバーされたクエリの重要性を説明してください。

    カバーされたクエリを使用すると、MongoDBはクエリ条件を照合し、同じインデックスを使用してフィールドの結果を返すことができます。これは、すべてのフィールドがすでにインデックス自体でカバーされているためです。これは、使用されているドキュメントの内部を見なくても実行できます。また、インデックスがRAMに保存されることがあるため、対象となるクエリはより高速に実行されます。

    20。対象となるクエリとは何ですか?

    対象となるクエリは、次のようなクエリです。

    • 結果で計算されるフィールドはインデックスに似ています
    • クエリセクションで使用されるフィールドは、クエリで使用されるインデックスの一部です

    21。 MongoDBのアグリゲーションとは何ですか?

    集計操作は、データレコードの処理と計算結果の返しに役立ちます。集計操作は、さまざまなドキュメントの値をグループ化し、グループ化されたデータに対してさまざまな操作を実行して、単一の結果を返すのに役立ちます。 MongoDBには、集計を実行するための3つの代替方法があります。

    • map-reduce関数の使用
    • 集約パイプラインの使用
    • 単一目的の集計コマンドとメソッドの使用。

    22。レプリケーションとは何か、MongoDBでどのように機能するかを説明してください。

    MongoDBでのレプリケーションは、サーバー間でデータを同期するプロセスです。レプリケーションはデータの可用性を向上させ、一方で冗長性を提供します。複数のデータコピーが異なるDBサーバー上にあるため、レプリケーションはデータベースが単一のサーバーを失うのを防ぎます。サービスの中断やハードウェアの場合、障害の複製は回復に役立ちます。

    23。 MongoDBのプライマリおよびセカンダリレプリカセット

    MongoDBでは、レプリケーションは「シングルマスター」と呼ばれます。これは、一度に1つのノードのみが書き込み操作を受け入れることができることを意味します。プライマリノードとマスターノードは書き込みを受け入れます。すべてのセカンダリノード(スレーブ)はプライマリノードから複製されます(読み取り専用。準備はできていますが、書き込みはできません)。

    24。 MongoDBのデータファイルが大きい理由を説明してください

    ファイルシステムの断片化とスペースの予約を回避するためにデータファイルを事前に割り当てるメカニズムにより、MongoDBには非常に大きなデータファイルが含まれる傾向があります。

    25。 MongoDBのストレージエンジンとは何ですか?

    ストレージエンジンは、データがディスクに保存される方法を管理するデータベースの一部です。たとえば、あるストレージエンジンは、用途の広い書き込み操作でより高いスループットをサポートし、別のストレージエンジンはより優れたパフォーマンスを提供し、重いワークロードを処理しながら効率を確保します。

    26。 MongoDBでジャーナリングがどのように機能するかを説明する

    MongoDBは、ジャーナルで実行しているときにデータファイルへの変更をエミュレートする前に、書き込み演算子をディスク上のジャーナルとメモリに保存して適用します。ジャーナル書き込みはアトミックです。つまり、ディスク上のすべてのジャーナルファイルで一貫性が保たれます。 MongoDBは、ジャーナリングが有効になっている場合はいつでも、dbpathによって定義されたディレクトリ内にジャーナルサブディレクトリを作成できます。

    27。 MongoDBで使用される2つのストレージエンジンに名前を付けます

    MongoDBで使用される2つのストレージエンジンは次のとおりです。

    • WiredTiger
    • MMAPv1

    28。 MongoDBでロックとトランザクションがどのように実現されるかを説明する

    MongoDBでロックとトランザクションの概念を実現するために、埋め込みドキュメントとも呼ばれるドキュメントのネストを使用できます。さらに、MongoDBは、単一のドキュメント内で作業する場合は常にアトミック操作をサポートします。

    29。 MongoDBのGridFSとは何ですか?

    GridFSは、BSONが推奨する最大サイズである16MBを超えるファイルを取得および保存するための仕様です。 GridFSは、通常推奨される制限を超えるファイルを2つの部分またはチャンクに分割し、ストレージ制限を超えるたびに別々のファイルとして保存します。

    30。同時実行性がプライマリレプリカセットにどのように影響するかを説明しますか?

    MongoDBは、レプリケーション中にプライマリ上のコレクションに書き込むときに、常にプライマリoplogに書き込みます。プライマリoplogは、ローカルデータベースにある特殊コレクションです。したがって、このような場合、MongoDBはローカルデータベースとコレクションデータベースの両方をロックする必要があります。

    31。 MongoDBに関連する名前空間の意味を説明する

    名前空間は、簡単に言うと、コレクションとデータベース名の連結として知られています。たとえば、foss.linuxはデータベースであり、linuxはコレクションです。

    32。 MongoDBのObjectID構造について説明しますか?

    ObjectIDは、以下を含む12バイトのBSONドキュメントタイプです。

    • 3バイトカウンター
    • 2バイトのプロセスID
    • 秒を表す4バイトの値
    • 3バイトのマシン識別子

    33。 MongoDBが他のSQLデータベースよりも優れていると見なされる方法を説明してください。

    MongoDBは、高度にスケーラブルで柔軟なドキュメント構造を可能にすることで知られています。たとえば、1つのデータドキュメントに5つの列を含めることができ、同じコレクション内の他のドキュメントに10の列を含めることができます。 MongoDBデータベースは、効率的なストレージとインデックス作成の手法を備えているため、SQLデータベースよりもはるかに高速です。

    34。 MongoDBで使用できるすべての言語に名前を付けますか?

    これらのインタビューの質問を書くとき、MongoDBは次の公式言語C、C#、Java、C ++、Python、PHP、Ruby、Scala、Erlang、Go、およびPerlをサポートします。上記のすべての言語はMongoDBで使用できます。ただし、これは、MongoDBをサポートするために将来さらに多くの言語を導入できるという事実を妨げるものではありません。

    35。 MongoDBは外部キー制約をサポートしていますか?

    MongoDBは、外部キー制約と関連する関係をサポートしていません

    36。 MongoDBでスキーマを作成する際に考慮する必要のあるポイントを強調します

    ここに記載されている点を考慮する必要があります:

    • 読み取りモードではなく、書き込み時に結合を行う必要があります
    • ドキュメントを一緒に使用する場合は、ドキュメントを分離することをお勧めします。ただし、オブジェクトを1つのドキュメントに結合します
    • 頻繁なユースケースに合わせてスキーマを最適化する
    • スキーマが要件に沿って設計されていることを常に確認してください
    • 複雑な集計はスキーマで行う必要があります

    37。 MongoDBでコレクションを作成および削除するために使用される構文を提供します

    コレクションの作成に使用される構文は次のとおりです。db.createCollection(name、options)

    コレクションの削除に使用される構文は次のとおりです。db.collection.drop()

    38。 MongoDBのObjectIDは何で構成されていますか?

    ObjectIDは、次のコンポーネントで構成されています。

    • クライアントマシンID
    • タイムスタンプ
    • クライアントプロセスID
    • 3バイトインクリメントカウンター

    39。 MongoDBで使用されるデータ型に名前を付けます

    MongoDBは、ドキュメントの値としてさまざまなデータ型を提供します。 MongoDBドキュメントは、JavaScriptのオブジェクトに似ています。 JSONの本質的な値のペアの性質に加えて、MongoDBはさまざまな追加のデータ型もサポートしています。 MongoDBの主なデータ型は次のとおりです。

    • ブール値
    {"x" : true}
    • 番号
    {"x" : 4}
    • ヌル
    {"x" : null}
    • 文字列
    {"x" : "foobar"}
    • 日付
    {"x" : new Date()}
    • 配列
    {"x" : ["a", "b", "c"]}
    • 正規表現
    {"x" : /foobar/i}
    • オブジェクトID
    {"x" : ObjectId()}
    • バイナリデータ
    Binary data is a concatenation of arbitrary bytes
    • コード
    {"x" : function() { /* ... */ }}
    • 埋め込みドキュメント
    {"x" : {"foo" : "bar"}}

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

    MongoDBはさまざまな用途に使用できます。まず、インターネットアプリケーションを構築するときに、MongoDBを使用できます。次に、MongoDBを使用して、迅速に進化し、エレガントに拡張することを目的としたビジネスアプリケーションを構築できます。アジャイル手法を使用してスケーラブルなアプリケーションを構築する開発者は、スケーラブルなアプリケーションを構築するための優れた選択肢であるMongoDBに精通しています。次のことを行う必要がある場合は、MongoDBを最初に選択する必要があります。

    • データリポジトリを多くの管理可能な大規模なサイズにスケーリングします
    • 急速なビジネスの変化により、展開タイプを進化させます
    • 地理空間、テキスト、時系列のディメンションを使用してデータを管理、検索、保存します。
    • 迅速な反復型開発の構築をサポートする
    • より高いレベルの書き込みおよび読み取りトラフィックへのスケーリング– MongoDBは、シャーディングによる水平スケーリング、個別のマシン間でのデータ分散をサポートし、大規模なデータセットを含む高スループットの操作を容易にします。

    結論

    この記事は、面接中に出くわす可能性のあるほとんどすべての主要な面接の質問を包括的にカバーしています。質問が次の面接の準備に役立つことを願っています。見逃した質問がある場合は、コメントセクションに投稿してください。聴衆は私たちにとって大きな意味を持っています。読んでくれてありがとう。


    1. Mongooseで既存のコレクションにアクセスするにはどうすればよいですか?

    2. nullを保存する場合とMongoDBにキーをまったく保存しない場合

    3. $unsetは空です。次のようにフィールドを指定する必要があります:{$ unset:{<field>:...}}

    4. あるパブリケーションがネストされたフィールドを別のパブリケーションから隠しています