1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MongoDBについてまとめてみた

Posted at

MongoDBとは?

Mongo DBは、NoSQL(RDBMSではないデータベースシステム)の一種になります。
JSON形式でデータを管理しています。
C++で開発されています。

なぜMongo DBが生まれたのか?

Mongo DBはRDBMSの弱点を補うために生まれました。
昨今、ログやソーシャルゲームなどで大量のデータを保持する必要性が生まれてきました。
すると、RDBMSのように毎回 テーブルの定義を行う必要性があるデータ形式ではデータを保持するのが大変になります。
そこで、テーブル定義(スキーマ)を必要としないNoSQLが生まれてきており、その1種がMongo DBになります。

Mongo DBのデータ

「データベース > コレクション > ドキュメント」という構造でデータを管理しています。

わかりにくいので解説します。
ドキュメントとは、下記のような形でデータを保存するものです。
左側にkeyというデータを取り出すときの番号みたいなもの、
valueというところに実際のデータを配置します。
学校で言うと、keyが出席番号で、valueがその出席番号に紐づく生徒の情報に当たります。

ドキュメント
グラフ

コレクションは、このドキュメントを複数所有しているものになります。RDBMSでは、テーブルにあたります。

コレクション
グラフ

データベースは、このコレクションを複数所有している大本になります。

グラフ

シャーディング

シャーディングとは、データを複数サーバーに分散展開させる仕組みのことです。
Mongo DBはこのシャーディングを使って、簡単にスケールアップ(CPUやメモリ・ストレージなどを高性能にすること)を行えます。

流れを確認します。

まずはシャーディングを行いたいコレクションを指定します。
指定後は、コレクション内のデータにシャードキーというものが付与されます。
シャードキーの範囲からある程度の塊をチャンクとします。(下記参照)

グラフ

チャンクをそれぞれ別のサーバーに保管していきます。

グラフ

このようにデータを複数サーバーに分散展開させる仕組みをシャーディングと呼びます。

メリット/デメリット

メリット

  • keyで指定できることによる、高速なレスポンス
  • シャーディングやレプリケーションにより、障害耐性が高い

デメリット

  • データの整合性を保つのが大変

向いているシステム

下記のようなシステムに向いていると言われています。

  • Webサイトのログ蓄積
  • 負荷の低い読み取り・更新処理が大量にあるシステム(ゲームなど)

まとめ

いままでRDBMSばかりだったので、Mongo DBの仕組みが面白かったです。
もし誤りなどがあれば、コメントで指摘いただけると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?