MonogoDB

様々な分野で使用するカレンダを統一的に扱おうと、各プロジェクトのカレンダや予定表部分だけRESTfulサービスにしようとしています。このRESTサーバにはMonogoDBを使います。

MonogoDBはSQLを使わないデータベース、いわゆるNoSQLの代表格です。現在作成しているスケジューラでは、スピードを稼ぐためスケジュールのJSONファイルを毎回出力しており、それならMongoDBでもあまり変わらないだろうと思い、初めてNoSQLを使ってみることにしました。

まずはMongoDBのインストール。公式ドキュメントで見ると、repoファイルは自前で書かないと望んだバージョンがインストールできないとのこと。ドキュメントに従ってrepoファイルを作成します。

sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

作成したら、いつものようにyumを使いインストールします。

sudo yum install -y mongodb-org

SELinuxの利用の状況により、MongoDBの動作に影響を与えます。インストールマシンはSELinuxを有効にしています。

$ getenforce 
Enforcing

この場合は、MongoDBの利用するポートを開放します。

sudo semanage port -a -t mongod_port_t -p tcp 27017

SELinuxは扱いが面倒なのでdisabledにしがちですが、できる限り有効にしていたほうが無難です。

既にMongoDBを利用できる環境にありますので、早速実行してみます。

sudo service mongod start

さらに、再起動時に自動起動できるようにしておきます。

sudo systemctl enable mongod

私自身が初心者ですので、MongoDBがどのようなものか、mongo shellを起動してみました。

mongo --host localhost:27017

MongoDB server version: 4.0.1
Server has startup warnings: 
2018-08-05T21:01:54.685+0900 I CONTROL  [initandlisten] 
2018-08-05T21:01:54.685+0900 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
...

何やら警告がでていますが、今は対応が分からないので無視しときます。色々メッセージが出てきますが、最終的にはプロンプトが表示されていますので、利用可能なようです。

試しに、現在のデータベースを確認します。

> db
test

testはMongoDBのデフォルトのデータベースです。

shellを抜けるにはquit()コマンドを使います。

> quit()

実際の利用については、もう少し探ってから書くことにします。