ファイナンス、情報通信技術のスキル・アグリゲーション・サイト
MongoDB は、 JSON (JavaScript Object Notation)形式のデータフォーマットで表されるドキュメントとそれらを集めたコレクションで構成されるドキュメント指向データベースで、NoSQL のひとつに分類されます。
ドキュメント指向 (Document-oriented、Document store)は、スキーマレスでデータ構造が柔軟です。
NoSQL (Not only SQL)は、リレーショナルデータベース(Relational Database、RDB、関係データベース)以外のデータベースを総称する表現です。 SQL は、リレーショナルデータベースの標準の問い合わせ言語です。
Ubuntu 16.04 LTS で MongoDB パッケージをインストールすると、バージョンは 2.6.10 となります。
$ sudo apt-get install mongodb
起動には、service コマンドが使えます。
$ sudo service mongodb start
最新の MongoDB のインストールについて案内する公式ページです。この記事時点のバージョンは 3.4.4 です。
https://docs.mongodb.com/
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
起動には、service コマンドのほか、systemctl コマンドが使えます。
$ sudo service mongod start
$ sudo systemctl start mongod
Bash on Ubuntu (16.04 LTS) on Windows (Creators Update)へのインストールは、前述の方法で、バージョン 2.6.10、3.4.4、どちらもできました。
ただし、バージョン 3.4.4 の起動には、systemd の環境が Bash on Ubuntu on Windows では完全ではない模様で、起動できませんでした。
そこで、/etc/init.d/mongod を作成して、service コマンドで起動しています。
#! /bin/sh
#
# Sample init.d script.
#
### BEGIN INIT INFO
# Provides: mongod
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $named
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: An object/document-oriented database
# Description: MongoDB is a high-performance, schema-free
# document-oriented database.
### END INIT INFO
set -e
PIDFILE=/var/run/mongod.pid
DAEMON=/usr/bin/mongod
test -x ${DAEMON} || exit 0
umask 022
. /lib/lsb/init-functions
# Are we running from init?
run_by_init() {
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
case "$1" in
start)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Starting database daemon:" "mongod"
if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} -- --config /etc/mongod.conf ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
if init_is_upstart; then
exit 0
fi
log_daemon_msg "Stopping databese daemon:" "mongod"
if start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}; then
log_end_msg 0
rm -f ${PIDFILE}
else
log_end_msg 1
fi
;;
force-stop)
if init_is_upstart; then
exit 0
fi
log_daemon_msg "Stopping databese daemon:" "mongod"
if start-stop-daemon --stop --quiet --oknodo --pidfile ${PIDFILE}; then
log_end_msg 0
rm -f ${PIDFILE}
fi
;;
reload)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Reloading database daemon configuration:" "mongod"
log_warning_msg "cannot re-read the config file (use restart)."
;;
restart|force-reload)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Restarting database daemon:" "mongod"
if start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile ${PIDFILE}; then
rm -f ${PIDFILE}
fi
if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} -- --config /etc/mongod.conf ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
try-restart)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Restarting database daemon:" "mongod"
set +e
start-stop-daemon --stop --quiet --retry 30 --pidfile ${PIDFILE}
RET="$?"
set -e
case $RET in
0)
# old daemon stopped
rm -f ${PIDFILE}
if start-stop-daemon --start --quiet --oknodo --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON} -- --config /etc/mongod.conf ; then
log_end_msg 0
else
log_end_msg 1
fi
;;
1)
# daemon not running
log_progress_msg "(not running)"
log_end_msg 0
;;
*)
# failed to stop
log_progress_msg "(failed to stop)"
log_end_msg 1
;;
esac
;;
status)
if init_is_upstart; then
exit 1
fi
status_of_proc -p ${PIDFILE} ${DAEMON} mongod && exit 0 || exit $?
;;
*)
log_action_msg "Usage: /etc/init.d/mongod {start|stop|force-reload|restart|status}"
exit 1
esac
exit 0