dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

MacでMongoDBのインストールから起動まで

こちらの記事と公式サイトを参考に、
インストールからとりあえず動かしてみるところまでやってみました。

ちなみに、mongoDBをインストールしてみようと思った理由は、こちらのツールです。
GitHub - watsonmw/automated-pageloadmetrics
ここのところずっと、Webサイトのパフォーマンスを測定する方法を検討していたのですが、
その時に発見したこのツールにはmongoDBが必要だったので
どうせならインストールの手順まで含めてまとめとこうかと。


(2017/08/19追記)

久々に読み返しながら最新版(3.4.7) をインストールしようとしたら情報が古い&わかりづらいところがあったので
書き直しました。

dackdive.hateblo.jp

インストール手順についてはこちらを参考にしてください。

(追記ここまで)

以下、mongoDBについてです。

mongoDBって何?

わかっているところまでですが...

  • MySQLなどと同じく、データベースの一種
  • RDB(リレーショナルデータベース)などと違い、SQLを使用しない、いわゆるNoSQLの一種
  • NoSQLの分類に含まれるデータベースとしては
    • key-valueストア:GAEはこれだった気が
    • ドキュメント指向データベース:MongoDBはこれに該当します
    • オブジェクト指向データベース:「Db4o」「ZopeDB」「ObjectStore」など、と記事では紹介されているが、全部知らない...

「ドキュメント指向データベース」は「key-valueストア」におけるvalue部分が、
単純なデータ型でなく構造化されたドキュメントになっているらしい。
つまり、JSONXMLなどを直接データベース化すると考えるとよい、とのこと。

なるほど。

ついでに、RDBと対比させてmongoDBで用いる用語の整理を。

RDB mongoDB
データベース データベース
テーブル コレクション
レコード ドキュメント

「コレクション」とはテーブルのこと、
「ドキュメント」とはレコードのこと。

インストール

公式サイトを見ながらインストールします。
Install MongoDB Community Edition on macOS — MongoDB Manual

私は上のガイドにならってhomebrewで入れました。

# brewを最新の状態に更新
brew update
# インストール実行
brew install mongodb

以上。

設定(mongod.conf)

dbファイルが作成される場所や

~/.homebrew/

の場合、

~/.homebrew/etc/mongod.conf

# データ保存場所
~/.homebrew/var/mongodb

# ログ保存場所
~/.homebrew/var/log/mongodb/mongo.log

起動

データベース(?)を先に起動

mongod

クライアント側を起動し、mongoDBを使えるようにします。

mongo

mysqlコマンドと同じですね。
実行すると、以下のようなメッセージが。

MongoDB shell version: 2.4.9
connecting to: test
Server has startup warnings:
Sun Feb  9 01:02:55.858 [initandlisten]
Sun Feb  9 01:02:55.858 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> 

データベースにデータを挿入してみる

mongoDBの操作方法を学ぶのは本来の目的とは逸れるため、
ここではドキュメントを挿入するまでをメモしてみます。

# 以下、mongo実行中のコマンド

# データベース一覧を表示する
> show dbs
local

# 現在選択しているデータベースを表示する
> db
test

# 使用するデータベースを変更する
# 指定したデータベースが存在しない場合、エラーは出ず新規作成される
> use (データベース名)

# コレクション(=テーブル)「articles」にドキュメント(=レコード)を追加してみる
# ここでも、コレクションがなくても自動的に作成される
> db.articles.save({ 
... title: "MongoDB を試してみよう",
... author: "MyName"
... })

# ↑複数行に渡る場合は「...(ピリオド3つ)」

# コレクションが作成されたことを確認する
> show collections
articles
system.indexes

# ドキュメントを検索する
> db.articles.find ()
{ "_id" : ObjectId("52f660c233b02301d62a44c2"), "title" : "MongoDB を試してみよう", "author" : "MyName" }