MongoDB

f:id:utouto97:20210704221944p:plain

MongoDB

MongoDBは、ドキュメント型のNoSQLデータベースです。
C++で開発されていて、人気のあるデータベースの一つです。

「MongoDBでは、どのようにデータを保存・管理しているの?」

MongoDBはドキュメント型のNoSQLです。

MongoDBでは、JSONのような「ドキュメント」という形式でデータを格納します。
RDBのテーブルとは異なりスキーマがないため、柔軟なデータを格納することができます。
そして、「ドキュメント」を集めたものが「コレクション」です。
複数のドキュメントを束ねて、一つのコレクションとして扱います。

「MongoDBの強みと弱みは?」

MongoDBは、次のような強みがあります。

  • JSON形式で階層型データを扱える
    MongoDBはJSON形式でデータを格納するため、階層型のデータを格納できます。
    また、きちっと決められたスキーマがあるわけではないため、柔軟なデータを扱うことができます。
  • 強力なインデックス
    セカンダリインデックスや複合キーインデックス、マルチキーインデックスといった便利なインデックスがあります。
  • SQLに似せたクエリで扱いやすい
    NoSQLであるMongoDBですが、SQLに似たクエリで、扱いやすいです。
  • 水平分割・複製が容易
    ドキュメント型のNoSQLであるMongoDBは、水平分割や複製が容易にできます。

一方で、MongoDBには次のような弱みもあります。

  • トランザクションがなく、一貫性を保証できない
    MongoDBでは、複数のドキュメントを一貫性を保って更新することはできません。
    そのため、複数ドキュメントで一貫性を保証する必要がある場合、利用できません。
  • 結合ができない
    MongoDBでは、ドキュメントの結合をすることができません。
    そのため、複数ドキュメントの内容を統合して処理する場合、アプリケーション側で実装する必要があります。
  • スキーマがないため、データ型が不定 MongoDBはスキーマがありません。
    そのことは、柔軟に様々な形式のデータを扱えるといったメリットがある一方で、デメリットもあります。
    スキーマがなく、キー名やデータ型が不明です。
    そのため、保守性の低下といった問題があります。
    これは動的型付け言語と似たようなイメージです。

終わり