調べたいこと

バックアップの取り方

mongodumpはデータベースをロックしないのとか、中途半端な状態のバックアップがとれたりしないのかとかが気になります。
トランザクションがないのでそういった問題はないのかな。
とりあえずslave組めば良いという気も。

MySQL との比較

MySQL 5.5 と insert 性能を比較したい。

メモリの使い方

mmap使っていてdatabaseのサイズだけメモリを確保するなら、ノードに積んでいるメモリより大きなdatabaseに全件findするとswapの嵐になるのかな。安全に使える搭載メモリとdatabaseサイズの関係を知りたいですね。

32bit版と64bit版どちらを使うべき?

短い答え

64bit版です。

長い答え

32bit 版は大体 2GB までのサイズの database までしかサポートしません。

  • あまりデータサイズが大きくなる予定がない
  • 公開ウェブサービスには使わない
  • MongoDB自体の勉強や小規模な実験用

といった場合には 32bit 版でも構いません。

この制限は特定のcollectionではなくdatabase全体が対象です。
例えばmap/reduce結果の一時collectionなども含まれますので、データサイズが上限に近い状態で運用していると急に溢れる恐れがあります。
一度上限に達すると経験的にはcollectionの削除も含めてほとんど何もオペレーションできなくなりますので注意してください(db.dropDatabase()すらできなくなったことも)。

以下のような場合には迷わず 64bit 版を使いましょう。

  • メモリが潤沢に積んである 64bit OS マシンを持っている
  • 公開するウェブサービスに使う
  • 大規模データを処理する

see also http://blog.mongodb.org/post/137788967/32-bit-limitations

MongoDBのインストール:古いCentOS/RedHatの場合

CentOS 5.3 以下を使っている場合にはバイナリのtarballをダウンロードしてインストールするのが無難です。
http://www.mongodb.org/downloads から、OS に合わせて Linux 32-bit か Linux 64-bit をダウンロードしてください。

32bit 版の例

$ wget -q http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.5.tgz
$ tar fxz mongodb-linux-i686-1.6.5.tgz && cd mongodb-linux-i686-1.6.5
$ ls -R
.:
GNU-AGPL-3.0  README  THIRD-PARTY-NOTICES  bin

./bin:
bsondump  mongo  mongod  mongodump  mongoexport  mongofiles  mongoimport  mongorestore  mongos  mongosniff  mongostat

ご覧のように実行ファイルしか入っていませんので、起動スクリプトなどがほしい場合は、ソースの tarball から取ってきてください。

$ wget -q wget http://downloads.mongodb.org/src/mongodb-src-r1.6.5.tar.gz
$ tar fxz mongodb-src-r1.6.5.tar.gz && cd mongodb-src-r1.6.5
$ ls rpm/
init.d-mongod  mongo.mdv.spec  mongo.spec  mongod.conf  mongod.sysconfig

rpm/ に CentOS / RedHat 向けのファイルがありますので、適当にコピーして使うと良いでしょう。

例えば、

$ sudo install -m 755 rpm/init.d-mongod /etc/rc.d/init.d/mongod
$ sudo install -m 644 rpm/mongod.conf /etc/mongod.conf
$ sudo install -m 644 rpm/mongod.sysconfig /etc/sysconfig/mongod

とか。mongod.conf と sysconfig/mongod は後で必要に応じて修正してください。

MongoDBのインストール:Gentoo Linuxの場合

~x86マスクされていますので、

$ ACCEPT_KEYWORDS=~x86 sudo -e emerge mongodb

とでもしてください。オプションは特にありません。

あんまり更新されていないらしく現時点では 1.6.0 が最新です。
もっと新しいバージョンを overray するか諦めてバイナリをインストールすると良いと思います。

MongoDBのインストール:CentOSの場合

CentOS 5.4 以上/Fedora 12以上を使っている場合には yum でインストールできます。
これも手順は簡単です。

  1. yum レポジトリを設定する
  2. yum install する

yum レポジトリを設定する

に書かれている設定内容を、/etc/yum.repos.d/10gen.repos という名前で保存してください。

ファイル名は 10gen.repos ではなくとも任意の名前で構いません。

CentOS 5.5 64bit の場合
# echo -e '[10gen]\nname=10gen Repository\nbaseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/\ngpgcheck=0' > /etc/yum.repos.d/10gen.repos

yum install する

$ sudo yum install mongodb

でインストールされます。10gen が管理しているレポジトリですので、最新の stable がインストールされます。
2011/01/25 現在は 1.6.5 です。