ファイナンス、情報通信技術、法律のスキル・アグリゲーション・サイト

MongoDB を Ubuntu 16.04 LTS にインストール

MongoDB は、 JSON (JavaScript Object Notation)形式のデータフォーマットで表されるドキュメントとそれらを集めたコレクションで構成されるドキュメント指向データベースで、NoSQL のひとつに分類されます。

ドキュメント指向 (Document-oriented、Document store)は、スキーマレスでデータ構造が柔軟です。

NoSQL (Not only SQL)は、リレーショナルデータベース(Relational Database、RDB、関係データベース)以外のデータベースを総称する表現です。 SQL は、リレーショナルデータベースの標準の問い合わせ言語です。

https://www.mongodb.com

MongoDB 2.6.x を Ubuntu 16.04 LTS にインストール

Ubuntu 16.04 LTS で MongoDB パッケージをインストールすると、バージョンは 2.6.10 となります。



$ sudo apt-get install mongodb

起動には、service コマンドが使えます。



$ sudo service mongodb start

MongoDB 3.4.x を Ubuntu 16.04 LTS にインストール

最新の MongoDB のインストールについて案内する公式ページです。この記事時点のバージョンは 3.4.4 です。

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/



$ 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

MongoDB を Bash on Ubuntu on Windows へインストール

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

MongoDB バージョン 3.4.5 へのアップデートを確認しました。

『MongoDB を Ubuntu 16.04 LTS にインストール』を公開しました。

『人間がつながったことが、インターネットのいちばん大きな意義だ。 … あきらめなくなくてもすむ社会にしたい。 … その足場の台が、インターネットの役割だ。』(序章より)

角川インターネット講座1 インターネットの基礎 情報革命を支えるインフラストラクチャー (角川学芸出版全集) amazon.co.jp Kindle本

ファイナンシャル・プランニング
6つの係数

終価係数 : 元本を一定期間一定利率で複利運用したとき、将来いくら になるかを計算するときに利用します。

現価係数 : 将来の一定期間後に目標のお金を得るために、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

年金終価係数 : 一定期間一定利率で毎年一定金額を複利運用で 積み立て たとき、将来いくら になるかを計算するときに利用します。

年金現価係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

減債基金係数 : 将来の一定期間後に目標のお金を得るために、一定利率で一定金額を複利運用で 積み立て るとき、毎年いくら ずつ積み立てればよいかを計算するときに利用します。

資本回収係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、毎年いくら ずつ受け取りができるかを計算するときに利用します。

積み立て&取り崩しモデルプラン

積立金額→年金額の計算 : 年金終価係数、終価係数、資本回収係数を利用して、複利運用で積み立てた資金から、将来取り崩すことのできる年金額を計算します。

年金額→積立金額の計算 : 年金現価係数、現価係数、減債基金係数を利用して、複利運用で将来の年金プランに必要な資金の積立金額を計算します。

『インターネットの文化として、実際に動くものを重視するというプラグマティズム(実用主義)の徹底がある。 … インターネットはソフトウェアで動いており、その多くの部分がオープンソースだから …』(序章より)

角川インターネット講座2 ネットを支えるオープンソース ソフトウェアの進化 (角川学芸出版全集) amazon.co.jp Kindle本