通常、データベースというとRDBMSをイメージすると思うが、このMongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるものだ。
以下、Wikipediaから引用。
MongoDBはRDBMSではなく、いわゆるNoSQLと呼ばれるデータベースに分類されるものである。RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。コレクションはRDBMSのような固定的なスキーマを持たない。ドキュメントには複雑な階層構造を持たせることもでき、それらの構造に含まれるフィールドを指定したクエリやインデクス生成も簡単な指定によって行える。RDBMSのように高度な結合操作を効率的に行うことはできないが、データの追加・更新・削除・クエリは高速に行うことができる。また、アプリケーションは自身の構造やデータ型に合った自然な形でデータを格納することができるため、扱うデータの特性によっては、RDBMSよりも容易かつ迅速に開発を行うことができる可能性がある。
Mongoという名前は、英語で「ばかでかい」を意味する "humongous" に由来する。
MongoDBの開発は10gen(現MongoDB Inc.)によって2007年10月から開始され、最初の公開リリースは2009年2月に行われた。
さて、今回はこのMongoDBをCentOS 7にインストールしてみる。
1.インストール
CentOS 7にMongoDBをインストールするために、まずはMongoDBのYumレポジトリを追加する。
「/etc/yum.repos.d/mongodb.repo」というファイルを作成する。
vi /etc/yum.repos.d/mongodb.repo
記述する内容配下。
[mongodb]
name=MongoDB repo
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
レポジトリファイルの作成が完了したら、以下のコマンドでMongoDBをインストールする。
yum install mongodb-org
以下、出力例。
[root@localhost ~]# yum install mongodb-org
読み込んだプラグイン:fastestmirror
mongodb | 951 B 00:00:00
mongodb/primary | 37 kB 00:00:01
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
mongodb 240/240
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mongodb-org.x86_64 0:2.6.5-1 を インストール
--> 依存性の処理をしています: mongodb-org-shell = 2.6.5 のパッケージ: mongodb-org-2.6.5-1.x86_64
--> 依存性の処理をしています: mongodb-org-server = 2.6.5 のパッケージ: mongodb-org-2.6.5-1.x86_64
--> 依存性の処理をしています: mongodb-org-mongos = 2.6.5 のパッケージ: mongodb-org-2.6.5-1.x86_64
--> 依存性の処理をしています: mongodb-org-tools = 2.6.5 のパッケージ: mongodb-org-2.6.5-1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ mongodb-org-mongos.x86_64 0:2.6.5-1 を インストール
---> パッケージ mongodb-org-server.x86_64 0:2.6.5-1 を インストール
---> パッケージ mongodb-org-shell.x86_64 0:2.6.5-1 を インストール
---> パッケージ mongodb-org-tools.x86_64 0:2.6.5-1 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
========================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
========================================================================================
インストール中:
mongodb-org x86_64 2.6.5-1 mongodb 4.6 k
依存性関連でのインストールをします:
mongodb-org-mongos x86_64 2.6.5-1 mongodb 6.8 M
mongodb-org-server x86_64 2.6.5-1 mongodb 9.0 M
mongodb-org-shell x86_64 2.6.5-1 mongodb 4.3 M
mongodb-org-tools x86_64 2.6.5-1 mongodb 89 M
トランザクションの要約
========================================================================================
インストール 1 パッケージ (+4 個の依存関係のパッケージ)
総ダウンロード容量: 109 M
インストール容量: 276 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): mongodb-org-2.6.5-1.x86_64.rpm | 4.6 kB 00:00:00
(2/5): mongodb-org-mongos-2.6.5-1.x86_64.rpm | 6.8 MB 00:00:06
(3/5): mongodb-org-server-2.6.5-1.x86_64.rpm | 9.0 MB 00:00:07
(4/5): mongodb-org-shell-2.6.5-1.x86_64.rpm | 4.3 MB 00:00:06
(5/5): mongodb-org-tools-2.6.5-1.x86_64.rpm | 89 MB 00:00:51
----------------------------------------------------------------------------------------
合計 1.8 MB/s | 109 MB 01:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : mongodb-org-server-2.6.5-1.x86_64 1/5
インストール中 : mongodb-org-shell-2.6.5-1.x86_64 2/5
インストール中 : mongodb-org-tools-2.6.5-1.x86_64 3/5
インストール中 : mongodb-org-mongos-2.6.5-1.x86_64 4/5
インストール中 : mongodb-org-2.6.5-1.x86_64 5/5
検証中 : mongodb-org-mongos-2.6.5-1.x86_64 1/5
検証中 : mongodb-org-tools-2.6.5-1.x86_64 2/5
検証中 : mongodb-org-shell-2.6.5-1.x86_64 3/5
検証中 : mongodb-org-2.6.5-1.x86_64 4/5
検証中 : mongodb-org-server-2.6.5-1.x86_64 5/5
インストール:
mongodb-org.x86_64 0:2.6.5-1
依存性関連をインストールしました:
mongodb-org-mongos.x86_64 0:2.6.5-1 mongodb-org-server.x86_64 0:2.6.5-1
mongodb-org-shell.x86_64 0:2.6.5-1 mongodb-org-tools.x86_64 0:2.6.5-1
完了しました!
2.MongoDBの有効化&起動
次に、MongoDBをOS起動時に自動起動するようにし、かつサービスを起動させる。
なお、MongoDBはsystemctlでの有効化は出来ないため、chkconfigでの有効化を行う。
chkconfig mongod on
さらに、以下のコマンドでMongoDBのサービスを手動起動させる。
systemctl start mongod
さて、それでは実際にMongoDBにアクセスしてみよう。
以下のコマンドを実行する。
mongo
無事、アクセスできることを確認した。
3.ファイアウォールの設定変更
最後に、ファイアウォールの設定で27017ポートを開放する。
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
これで、外部からMongoDBへ接続出来るようになった。