HerokuのMongoDBアドオン

データベースのPaaSというと、選択肢はここに書ききれないくらい多いと思う。また、Node-REDでノードが用意されているデータベースというのも1ダースくらいはある。(こちらの記事を参照→Node-REDで扱えるDBノード総まとめ - Qiita)
ここではHerokuのアドオンでmLab MongoDBを使う方法を紹介する。mLab MongoDBはMongoDBのPaaSである。ちなみにHerokuボタンでNode-REDをデプロイすると、もれなくmLab MongoDBのアドオンがついてくる。また、Node-REDにはMongoDBのノードが用意されている。(これについては別記事 Node-REDでMongoDB - 滴了庵日録 を参照。)

MongoDBとは

  • いわゆるNoSQLのひとつ。つまりRDBではない。
  • スキーマレスである。つまり好きなときに動的にフィールドを追加できる。
  • つまり正規化もなにもあったもんじゃない。
  • データはJSON形式で保存される。(正確にはBSON=バイナリ型JSON)
  • RDB用語との対応は下表のようなかんじ。
RDB MongDB
テーブル コレクション
レコード ドキュメント
カラム フィールド

手順

※ HerokuボタンでNode-REDをデプロイした場合、7までの手順は不要

  1. Herokuにログインする (アプリはすでにあるものとする)
  2. Dashboard画面右上のメニューの「Elements」をクリック
  3. Heroku Elementsで「MongoDB」を検索
  4. 「Add-ons」の mLab MongDB を選択
  5. 「install mLab MongoDB」をクリック
  6. 「App to provision to」で自分のアプリ名を検索して選択
  7. 「Provision add-on」でアプリに追加する
  8. アプリの「Resources」の「Add-ons」に「mLab MongoDB」が追加されている
  9. 「mLab MongoDB」を開くと詳細が表示される
  10. データベース名、サーバーURI、ユーザー名を確認する
    ※ デフォルトのユーザーはデータベース名と同名である
  11. 画面右上の「user: ユーザー名」からユーザー設定画面を開き、パスワードを設定する
  12. または、「Users」の「Add database user」で適宜ユーザー名/パスワードを設定する
    ※ なぜかデフォルトのユーザーではNode-REDからアクセスできなかった (要調査)
  13. 「Collections」の「Add collection」で適宜コレクションを作成する

要メモ事項

  • データベース名: heroku_mg??????
  • サーバーURI: mongodb://ds??????.mlab.com:ポート番号/データベース名
  • ユーザー名 / パスワード
  • コレクション名

※ ユーザー名 / パスワードをURIに含める場合は、
mongodb://ユーザー名:パスワード@ds??????.mlab.com:ポート番号/データベース名

参考サイト

qiita.com