1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

一番人気のNoSQLデータベースMongoDBの基礎知識

Pocket

はじめに

リレーショナルデータベースが使いにくいと思ったことはありませんか?

リレーショナルデータベース(以下RDB)は、長く使われ続けてきた実績のあるデータベースで、どの分野でも広く使われています。
しかし、すべてのデータモデルがRDBに適しているとは限りません。
場合によっては、別のデータベースを使用したほうがよいこともあります。

そして、そのもう一つの選択肢が「NoSQL」です。

この記事では、RDB以外のデータベースを模索しているエンジニアの方のために、
一番人気のあるNoSQLデータベースである「MongoDB」についてお伝えしていきます。

なぜNoSQLが必要とされているのか?

近年、ウェブサービスが隆盛し、多数のWeb APIが使われるようになりました。
Web APIでよく使われるデータフォーマットに「JSON」がありますが、階層構造を持っている場合が多く、RDBに格納するにはあまり適していません。
スキーマ定義も悩みのタネです。

また、ビッグデータ(センサーなどから収集したテラバイトを超えるデータ)分析もトレンドとなっており、大規模なスケールが難しいRDBに代わるデータベースが求められています。
一般に、数百台、数千台規模のスケールはRDBでは困難です。

このような背景から、スキーマに縛られない、スケーラブルなデータベースとしてNoSQLが考案されました。

NoSQLデータベースの特徴

NoSQLは単一のデータベースを指すのではなく、RDB以外のデータベースの総称です。
NoSQLデータベースは、3つの共通した特徴を持っています。

一つ目は「スキーマレス」であることです。

NoSQLはRDBとは違い、事前にスキーマを定義することなくデータを格納できます。
スキーマがないというわけではありませんが、スキーマが固定されていないのです。
これはJSONなどの半構造化データを格納するのに適しています。

二つ目は「スケールしやすい」ことです。

RDBは水平スケールが苦手ですが、NoSQLでは数百台・数千台に渡る水平スケールが可能です。
大量のデータを並列処理できるため、ビッグデータ分析に最適です。
また、障害耐性も高く、一部のデータベースが故障しても処理を継続できます。

三つ目は「トランザクションを持たない」ことです。

RDBはトランザクションを使ってデータの整合性を保ちますが、NoSQLには基本的にトランザクションがありません。
これはNoSQLの特性的にトランザクションを実装することが適していないからです。
必要な場合にはRDBを使用するか、アプリケーション側で実装する必要があるでしょう。

MongoDBはどんなデータベースなのか?

NoSQLには数々のデータベースがありますが、そのひとつが「MongoDB」です。
NoSQLデータベースの中で突出した人気があり、RDBに引けを取らない人気です。
よくJSONを保存するために使用されます。

なぜならMongoDBは「ドキュメント型」のNoSQLだからです。
MongoDBのデータベースでは、「コレクション」という集合の中に「ドキュメント(JSON)」を格納します。格納したデータはSQLではないJavaScriptライクなクエリで取り出せます。
もちろん、更新や削除も可能です。

スキーマレスのためどんな構造のデータでも格納できますが、ある程度スキーマを整えておかないとクエリが難しくなってしまうため、スキーマを管理しなくてもいいわけではありません。

レプリケーションやシャーディングがサポートされているので、可用性を高めたり、水平スケールしたりすることも容易です。

どんな場合にMongoDBを使うべきなのか?

MongoDBが適しているのは、スキーマを事前に定義するのが困難な場合や高い水平スケールが求められる場合でしょう。
つまり、Web APIなどのJSONデータの保存やビッグデータ分析などですね。

RDBとNoSQLは排他的なものではないので、組み合わせて使うこともできます。
状況に合わせて最適なデータベースを選択しましょう。

まとめ

RDBとNoSQLの違いがお分かりになりましたか?NoSQLはRDBを置き換えるものではなく、相互に補い合いながら共存するものです。
データモデルを精査して、どちらのほうが適しているかよく考えてみましょう。
また、NoSQLを選ぶ場合には、いくつか種類があることに注意してください。

あなたはどのデータベースを使いますか?

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る