フリーキーズ | 独学プログラミング

MongoDBとは

最終更新日

MongoDBは、NoSQLデータベースと呼ばれるデータベースソフトウェアの一種です。データをテーブルに格納する従来のSQLデータベースとは異なり、MongoDBは柔軟なJSONライクなドキュメント指向を採用しています。

このドキュメント指向型は非常に柔軟です。各ドキュメントはSQLデータベースの行のようなもので、好きなだけ多くのフィールドを持つ独自の構造を持つことができます。フィールドには、他のドキュメントや配列、ドキュメントの配列などを含めることができます。

MongoDBの使用例

例えば、SNSを作成するとします。従来のSQLデータベースでは、ユーザー用のテーブル、投稿用のテーブル、コメント用のテーブルを持つ形になるでしょう。MongoDBでは、代わりに User ドキュメントのコレクションがあり、各ドキュメントは次のような形になっています。

{
  "username": "exampleUser",
  "email": "exampleUser@example.com",
  "posts": [
    {
      "postID": "001",
      "content": "これは私の最初の投稿です!",
      "comments": [
        {
          "username": "anotherUser",
          "content": "素晴らしい!"
        },
        {
          "username": "thirdUser",
          "content": "ナイス投稿!"
        }
      ]
    },
    {
      "postID": "002",
      "content": "これは私の2番目の投稿です!",
      "comments": []
    }
  ]
}

この場合、1つの User ドキュメントに、そのユーザーによる、あるいはユーザーへの関連する投稿やコメントがすべて含まれるため、ある種のクエリや操作をより高速かつ効率的に行うことができます。

MongoDBの特徴

MongoDBはデータが複雑、階層的、半構造的であったり、スキーマ(データの設計)が時間とともに進化する必要があるような使用例に特に適しています。ビッグデータやリアルタイムのウェブアプリケーションで広く使われており、1台のサーバー、データセンター、複数のデータセンターで展開でき、高い可用性とスケーラビリティを実現します。

他のデータベース技術と同様に、MongoDBにも長所と短所があり、正しい選択かどうかはプロジェクトの特定の要件に依存します。一般的に複数の操作を伴う複雑なトランザクションや分析処理を必要とするユースケースには推奨されません。