MongoDB 面接でよくある質問

Mongodb Mian Jiedeyokuaru Zhi Wen



MongoDB は、オープンソースの NoSQL データベース管理システムです。非構造化データの保存が容易になるだけでなく、管理も容易になります。数百万行の非構造化データをどのように管理するかという疑問が生じた場合はいつでも、MongoDB をお勧めします。

MongoDB の最初のバージョンは、2007 年 2 月にリリースされました。 10世代 ソフトウェア会社。2013 年後半、10gen は社名を MongoDB Inc. に変更しました。

MongoDB は、データを JSON ドキュメント形式で格納するために使用される NoSQL データベースです。この機能により、膨大な量の非構造化データを MongoDB に簡単に格納および管理できます。データを含むこれらのドキュメントのセットは、コレクションと呼ばれます。これらのコレクションは、リレーショナル データベースでデータを格納するために使用されるテーブルに似ています。







他のリレーショナル データベースや NoSQL データベースと比較して MongoDB が非常に人気がある理由は多数あります。



  • 開発者は、キーと値のペアに従って構造を定義できます
  • リレーショナル データベースと同様に、データに行と列は必要ありません。
  • MongoDB 構造の階層構造により、データを配列形式で格納したり、複雑なデータを格納したりできます
  • 複数のプログラミング言語をサポートしているため、開発者はデータベースを簡単に管理できます
  • また、gridFS およびレプリケーションの機能もサポートしています。

その人気により、MongoDB を扱う開発者には多くの雇用機会があります。この記事は、最も重要で、評価の高い多くの組織からよく寄せられる質問に関連しています。



MongoDB インタビューの質問

最もよくある質問は、初級レベル、中級レベル、上級レベルの 3 つのレベルに分かれています。





基礎の段階

これらの質問は、MongoDB の基本的な概念と用語に関連しており、面接では、すべての候補者がこれらの質問に答える必要があります。

質問 1: NoSQL データベースとその種類について何を知っていますか?
NoSQL データベースとは、SQL データベースのようにデータをテーブルに格納せず、ドキュメントやキー値フォームなどの他の形式でデータを格納するデータベースです。



NoSQL データベースには 4 つの重要なタイプがあります。

  • ドキュメント データベース: これらのデータベースはデータを JSON ドキュメントの形式で保存し、これらのドキュメントを組み合わせてコレクションを形成し、これらのコレクションを組み合わせてデータベースを形成します。
  • キー値データベース: これらのデータベースは、データをキーと値の形式で保存します。たとえば、「Name = John」のように、この例では「Name」がキーで「John」が値です。
  • ワイド カラム ストア: これらのデータベースは、動的テーブルの形式でデータを格納します。リレーショナル データベースとは異なり、これらのテーブルは構造化されていません。
  • グラフ データベース: これらのデータベースにはエッジとノードが含まれています。ノードは情報を格納するために使用され、エッジはノード間の関係を示すために使用されます。

質問 2: MongoDB はどのタイプの NoSQL データベースですか?
MongoDB データベースはドキュメント データベースに属しています。つまり、JSON ドキュメントに従ってデータを格納します。スキーマには従わず、任意のタイプのデータを挿入できます。

質問 3: MongoDB と SQL データベースのどちらが優れていますか?
MongoDB は、非構造化データを処理できるという点で SQL データベースよりも優れていますが、SQL データベースは構造化データのみを処理し、リレーショナル データベースとは異なり制限なしで保存します。 MongoDB はスキーマレスという特徴があるため、SQL データベースに比べてデータがテーブルの形ではなく複数のテーブルに配置されているため、データが同じ場所に配置されるため、クエリが高速に処理されます。クエリがデータにアクセスしやすく、MongoDB を使用すると、そのデータを他のプログラミング言語にマップできるため、ユーザーは簡単に作業できます。

質問 4: MongoDB のドキュメントおよびコレクションとは何ですか?
データはドキュメントの形式で MongoDB に保存され、これらのドキュメントが組み合わされてコレクションが形成され、多数のコレクションが組み合わされてデータベースが形成されます。これを理解するために、school_data のデータベースの例を考えてみましょう。school_data のデータベースには、classes_data を含むコレクションが含まれており、さらに、これらのドキュメント (classes_data) には学生のデータ (student_data) がドキュメントの形式で含まれています。

質問 5: MongoDB のデータ型とは何ですか?
MongoDB がサポートするデータ型は多数あります。

文字列データ型は、データをアルファベット/文字の形式で格納し、8 バイトで、Jone などの UTF-8 に属している必要があります。
整数 最大 64 ビットの数値を格納しますが、サイズはサーバーによって異なる場合があります (例: 1,54)。
ブール値 これは、0 または 1 のブール値を格納するために使用されます。たとえば、John is in class? です。その答えはイエスかノーのどちらかです。
ダブル これは、22.8 のような浮動小数点数を格納します。
最小/最大キー 最小値と最大値を比較するために使用されます。
配列 これは、配列または複数の値を 1 つのキーに格納するために使用されます。
タイムスタンプ ドキュメントが変更されると、変更の記録を保持できます。
物体 これは埋め込みドキュメントを保存します
ヌル null 値を格納します。
シンボル これは文字列のタイプで、記号に関連する言語を格納できます
日にち 現在の時刻と日付は、これらのデータ型に格納できます
オブジェクト ID ドキュメントには一意の ID があり、これらの ID はこのデータ型に格納できます
バイナリデータ 機械語とも呼ばれるバイナリデータが格納されています。
コード Javascript コードは、このデータ型の助けを借りてドキュメントに保存されます
正規表現 このデータ型には任意の式を格納できます

質問 6: MongoDB に代わるものは何ですか?
MongoDB は NoSQL データベースの一種であり、大規模な分散データが BSON ドキュメントに格納されます。 MongoDB の代替として、Amazon DynamoDB、Microsoft Azure Cosmos DB、Couchbase、PostgreSQL、Redis、および Cassandra を使用できます。

中間レベル

これらの質問は、基本よりも高度な概念に関連しており、面接では、平均的な候補者がこれらの質問に答えることが期待されます。

質問 7: MongoDB と SQL を大まかに比較するにはどうすればよいですか?
SQL データベースは、テーブルを構成する行と列の形式でデータを適切に構造化および整理された方法で格納するリレーショナル データベースです。一方、MongoDB データベースは、ドキュメントにデータを格納する NoSQL データベースです。これらのドキュメントはまとめてコレクションとして知られ、これらのコレクションを組み合わせてデータベースを形成します。

質問 8: MongoDB に ACID トランザクション管理やロックなどの機能はありますか?
いいえ、デフォルトでは、MongoDB は複数のドキュメントで ACID トランザクションを提供しませんが、単一のドキュメントで ACID トランザクションをサポートすることはできます。

質問 9: MongoDB のインデックス作成とは何ですか?
MongoDB では、インデックスは、データベースのいくつかのフィールドを占有し、インデックスを作成するためのデータを保持する特別なデータ構造です。インデックスはデータベースの検索能力を向上させます。多くのドキュメントから特定のものを検索する代わりに、ユーザーはインデックス作成の助けを借りて指定されたドキュメントに直接アクセスできます。

{
学生証 = 1
学生の名前 = 「ポール」
= 'アメリカ'
}

上記の例では、「Student_id = 1」がインデックスなので、Student_id または 1 で検索すると、次のドキュメントが開きます。

質問 10: MongoDB では、配列フィールドにインデックスを作成できますか?

はい、MongoDB の配列フィールドにインデックスを作成できます。これにより、配列の各値にインデックスが付けられます。実際、MongoDB 自体がマルチキー インデックスを作成するため、インデックス フィールドが配列の場合は指定する必要はありません。

質問 11: 単一の MongoDB インスタンスで複数の Javascript 操作を実行することは可能ですか?
バージョン 2.4 の MongoDB V8 には JavaScript エンジンが追加されているため、単一の mongod インスタンスで複数の Javascript 操作を実行することが可能です。

質問 12: MongoDB のジャーナリングとは何ですか?
MongoDB でジャーナリングを有効にすると、Journal のディレクトリ内に Journal のサブディレクトリが作成されます。 /データ/データベース これは、デフォルトで dbPath によって定義されたパスです。ジャーナリングの実行中、データの変更がディスクに転送される前に、MongoDB はデータを編集してメモリとディスクに保存します。データの変更が保存されていないためにエラーが発生した場合に非常に役立ちます.MongoDBはジャーナルファイルから変更を取得し、ファイルの耐久性を確保できます.

エキスパートレベル

これらの質問は、MongoDB のより高度な概念に関連しているため、専門知識の受験者はこれらの質問に答える必要があります。

質問 13: MongoDB シャーディング プロセスとは何ですか?
MongoDB では、シャーディングは巨大なデータベースのデータを多数の MongoDB サーバーに分散するプロセスです。そのため、データの扱いが簡単で、クエリへの応答も高速です。 MongoDB は、シャーディングによる水平スケーリングをサポートしています。

MongoDB クラスターは、次の 3 つの部分で構成されています。 破片 ;これはレプリカとも呼ばれ、すべてのサーバーで使用できます。 マンゴー ;サーバーとシャードの間のインタープリターとして機能し、 構成サーバー ;クラスターとメタデータの構成設定を保存します。

質問 14: スケールアウトとは何ですか?MongoDB ではどのように発生しますか?
1 つのノードに多くのデータがある場合、複数のノードが負荷のあるノードに近づき、負荷を分散します。 1 つのノードの負荷を異なるノードに分担するこのプロセスは、スケールアウトと呼ばれ、水平スケーリングとも呼ばれます。

質問 15: MongoDB クエリ言語を使用して、クエリ プランに関する情報を取得するにはどうすればよいですか?
説明() コマンドが使用され、「allPlansExecution、executionStats、および queryPlanner」のモードをサポートします。例えば:

デシベル . レストラン . 説明 ( 「実行統計」 ) . 探す (
{ '料理' : 1 「区」 : 「ブルックリン」 }
) ;

上記の例では、レストランのデータは Explain() コマンドから取得されます。

質問 16: MongoDB 集約フレームワークについて説明してください。
MongoDB では、さまざまなコレクションからデータを取得し、計算後に集計として知られる結合された結果を返します。これには 3 つのステップがあります。最初に、入力を取得し、$match() を使用してドキュメントから必要なドキュメントをフィルター処理し、次に $group() を使用してフィルター処理された情報に対して集計ジョブを実行し、最後に並べ替えます。 $sort() を使用した結果。

質問 17: MongoDB 操作を使用して複数のデータベースをロックすることは可能ですか?
はい、MongoDB は複数のデータベースをロックできます。複数のデータベースを即座にロックするには、MongoDB 操作を使用します デシベル。copyDatabase() 、一方、操作、 デシベル.repairDatabase() データベースの編集にグローバル ロックを適用し、削除されるまで他の操作の実行を制限します。

質問 18: MongoDB の GridFS とは何ですか?
画像、ビデオ ファイル、オーディオ ファイルなどの 16 MB を超える大きなファイルは、GridFS を使用して MongoDB で管理され、単一のドキュメントではなく、ファイルの一部やチャンクに格納されます。デフォルトでは、MongoDB は fs の 2 つの形式のみをサポートします。 files と fs.chunks を使用して、ファイルのチャンクとメタデータを保存します。

質問 19: MongoDB のレプリケーション現象をどのように説明できますか?
レプリケーションは、多くのサーバー間でデータを同期するプロセスですが、MongoDB はデータをコピーして別のサーバーにレプリケートするため、サーバーがクラッシュした場合でも、他のサーバーからデータを取得してデータのセキュリティを確保できます。

質問 20: Mongo Shell とは何ですか?
mongo シェルは JavaScript プラットフォームであり、MongoDB とやり取りしたり、クエリを使用してデータを変更したりできます。また、データベース インスタンスの維持などの管理目的にも使用されます。デフォルトでは、mongo シェルはインストール ファイルに含まれていますが、インストールされていない場合は、MongoDB サーバーからインストールできます。

結論

MongoDB は NoSQL データベースとして人気があり、データをドキュメント形式で管理するために使用され、スキーマレスであるため非常に扱いやすいです。 Twitter や Facebook など、多くの有名企業で使用されています。その人気のため、MongoDB インターフェースで作業している開発者には多くの雇用機会があります。この記事では、MongoDB のインタビューで最もよく聞かれる質問と、その適切な回答を共有しています。