MongoDB は、モダンアプリケーション開発およびクラウド向けに設計された汎用ドキュメントデータベースです。そのスケールアウトアーキテクチャにより、ノードを追加して負荷を共有することで、システムの需要増加に対応できます。
フルマネージドクラウドデータベース MongoDB Atlas のセットアップガイドをお探しですか?Atlas セットアップガイドをご覧ください。
MongoDB は、モダンアプリケーション開発およびクラウド向けに設計された汎用ドキュメントデータベースです。そのスケールアウトアーキテクチャにより、ノードを追加して負荷を共有することで、システムの需要増加に対応できます。
フルマネージドクラウドデータベース MongoDB Atlas のセットアップガイドをお探しですか?Atlas セットアップガイドをご覧ください。
MongoDB について学ぶ際に出てくる主要な概念や用語をいくつかご紹介します。
MongoDB は、データを JSON ドキュメントとして保存します。
ドキュメントデータモデルはアプリケーションコード内のオブジェクトに自然にマッピングされるため、開発者が容易に学習・使用できます。
JSON ドキュメント内のフィールドは、ドキュメントによって異なる場合があります。これを従来のリレーショナルデータベーステーブルと比較すると、フィールドを追加することは、データベーステーブル自体に列を追加すること、したがってデータベース内のすべてのレコードに列を追加することを意味します。
ドキュメントをネストして、階層的な関係を表現し、配列などの構造を保存することができます。

ドキュメントモデルは、多数のソースから得られる複雑で、急速に変化し、整理されていないデータを柔軟に扱うことを可能にします。これにより、開発者は新しいアプリケーション機能を迅速に提供できます。
内部での高速なアクセスや、より多くのデータ型をサポートするために、MongoDB はドキュメントを Binary JSON または BSON と呼ばれる形式に変換します。しかし、開発者の視点から見ると、MongoDB は JSON データベースです。
MongoDB では、コレクションはドキュメントのグループです。
関係データベースに慣れている場合は、コレクションをテーブルと考えることができます。ただし、MongoDB のコレクションははるかに柔軟です。コレクションは、設定しない限りスキーマを強制せず、同じコレクション内のドキュメントには異なるフィールドを含めることができます。
各コレクションは、1 つの MongoDBデータベースに関連付けられています。特定のデータベースにどのコレクションが含まれているかを表示するには、listCollections コマンドを使用します。
高可用性を確保する重要な方法の1つは、データのコピーを複数保持することです。MongoDB では、高可用性が設計に組み込まれています。
MongoDB でデータベースを作成すると、システムは自動的にデータのコピーをさらに少なくとも 2 つ作成します。これはレプリカセットと呼ばれます。レプリカセットは、相互間で継続的にデータをレプリケートする少なくとも 3 つの MongoDB インスタンスのグループであり、システム障害や計画メンテナンスの際にも冗長性を提供し、ダウンタイムから保護します。
最新のデータプラットフォームは、小型マシンのより大規模なクラスターを使用して、非常に高速なクエリと膨大なデータセットを取り扱うことができる必要があります。シャーディングとは、複数のマシンにインテリジェントにデータを分散することを指す用語です。
MongoDBのシャーディングはどのように機能しますか? MongoDBはコレクションレベルでデータをシャーディングし、コレクション内のドキュメントをクラスター内のシャード全体に分散します。 その結果、最大規模のアプリケーションもサポートするスケールアウトアーキテクチャが実現します。

インデックスはクエリの効率的な実行をサポートします。MongoDB では、複数のフィールドに対する複合インデックスなど、さまざまなインデックスの作成方法を提供しています。インデックスを慎重に選択すると、クエリはコレクション内のすべてのドキュメントを読み取るのではなくインデックスをスキャンするため、クエリが高速化されます。
どのクエリがインデックスの追加によってメリットを得られるかを分析する作業がまだ残っています。この分析を行うツールの1つが Performance Advisor です。クエリを分析し、クエリのパフォーマンスを向上させるインデックスを提案します。
MongoDB は、集計パイプラインと呼ばれるデータ処理パイプラインを作成するための柔軟なフレームワークを提供します。数十のステージと 150 以上のオペレーターおよび式を備えており、あらゆる構造のデータを大規模に加工、変換、分析できます。最近追加された機能の 1 つである では、複数のコレクションからの結果を柔軟に集計できます。

MongoDBではどのような言語を使用できますか?サポートされている言語のリストには、Node.js、C、C++、C#、Perl、PHP、Ruby、Rust、Scala、Swiftなど多数が含まれています。各言語のライブラリは頻繁にメンテナンスされており、新機能、バグ修正、セキュリティパッチ、パフォーマンスの向上のアップデートが行われます。
わずかいくつかのユーティリティとコマンドを使用して、インスタンスのステータス、クラスターの操作と接続メトリクス、ハードウェアメトリクスなどを確認することで、クラスターの健全性とパフォーマンスをモニタリングできます。モニタリングは、リアルタイムの問題が重大になる前に検出して対応するのに役立ちます。
MongoDB はオープンソースデータベースとして始まり、現在も MongoDB Community Edition を通じてそのように使用できます。
MongoDB Enterprise Edition では、商用ライセンスを通じて高度な機能を利用できます。
MongoDB Atlas は、すべてのパブリッククラウドで提供されている MongoDB Enterprise Edition の Database-as-a-Service(DBaaS)バージョンです。
MongoDB Atlas は、Atlas Search や Atlas Vector Search などの組み込みの緊密に統合された機能や、データのジオロケーション、バックアップ作成のためのその他の高度な機能によって、さまざまな形で拡張されています。
MongoDB について学ぶ際に登場する用語を理解できたところで、早速 MongoDB Atlas を使ってみませんか? あわせて MongoDB Community にもご参加ください。フォーラムからウェビナー、MongoDB University の無料コースまで、さまざまなコンテンツが提供されています。 まずは入門コースである M001: MongoDB の基礎コースから始めるのがおすすめです。
MongoDB は、幅広いユースケースに対応する汎用データベースです。MongoDB がアプリケーションに適しているかどうかまだ迷っている場合は、「MongoDB を使用する理由」の記事をご覧ください。
MongoDB の基礎シリーズで詳しく学ぶことができます。