[mongodb] ドットインストールでmongoDBの勉強をした。

ドットインストールでmongoDBの勉強をしたので、その備忘録。
最近良く名前聞くけどよくわからなかったので、勉強になりましたー。

mongoDBとは?

ドキュメント志向のデータベースですって説明では私は全くわかりません(笑)
ざっくり言うと、JSON形式のデータを1レコードとして、たくさん貯めていくテーブルのRDBって感じ。(この説明がわかりやすい人ってのもニッチ?)

RDB用語をmongoDB用語に書き換えると以下のような感じ。
データベース→データベース
テーブル→コレクション
レコード→ドキュメント

で、なんといっても、テーブル定義が事前に必要ないってところが、RDBとの大きな違いっぽいです。
事前に定義しなくていい上に、ドキュメント(レコード)ごとに違う構造でも許されるというゆるゆるな感じみたいです。

流行りのNoSQL

NoSQLと言われるタイプなのでSQL文を使わないでDBへの問い合わせを行います。Javascriptが使えるらしいのと、問い合わせ内容はJSON形式で記載してあげる感じです。
細かい文法は一度動画を見たくらいでは覚えられません!!(笑)

あとは、検索条件に正規表現が使えるってのがあって、それは「おぉ!」という驚きを感じました。

便利そうと思ったポイント

テーブル構造の事前定義不要

考えながらサービスというかシステムを作っていると、例えばユーザ情報のコレクション(テーブル)をとりあえず作ったけれども、あとから追加したい情報が増えました!ってことはよくありますよね。
そういうときにテーブルにカラムを追加しなくても黙って項目を増やせる辺りが便利そうだなと思いました。

構造的なデータを扱える

RDBの場合は、構造的なデータをそのままは格納できないけれども、mongoDBの場合は、そのまま格納できるので、その辺がすごく便利そうでした。
いろんなサイトを見ていて出てきたのは、例えば、RDBだと一つの記事に複数のタグがついている場合に、タグってカラムを作って、そのカラムにカンマ区切りでタグ名を羅列したりしますが、それをしなくても、mongoDBならそのまま入りますよーって話でした。

PHPに専用ライブラリがある

mongoDBはすでにPHPに専用のライブラリがあるみたいなんですよ。
しかも、PHPの配列を自動的にJSONに書き換えて保存してくれるみたいなので、その辺の保存したり取り出したりがPHPだと非常にやりやすそうな予感。PHPとJSONって親和性が高いみたいな話もあるし、PHPをよく使う私としてはこの辺りもメリットとして映りました。

その他

RDBよりも高速、スケールアウトしやすい、とかそういうメリットもあるみたいなんですが、このへんは私にはピンときませんでした。ちょっといじる程度だと関係ないんですよね(笑)
商用向けのサービスとか多くのユーザが利用するサービスとかになったら、このへんはありがたいんだろうなぁと思う次第です。アメーバピグ?か何か、サイバーエージェントでmongoDBを利用している、という記事を見かけました。

デメリット

「トランザクションが使えない」ということと「まだバグが多い」ということがあるみたいです。
データに不整合とかが絶対におきちゃいけない課金系とかそういう部分には、あまり使わないほうがいいかもしれない的な記述をどこかの記事で読みました。その辺はRDBの方が安心確実と言ったところなんでしょうか。

あとは、一般に馴染みが薄いから理解されにくい、初心者向けの情報が少ないというのもあります。
それから、レンタルサーバとかでは利用できないとかってデメリットもありますね。

おしまい

何かの機会に利用したいと思います!というか、いまから使おうと画策中。。

タイトルとURLをコピーしました