FreeBSDで,mongoDB V.S. Redis
mongoDBはドキュメント指向,RedisはKVSですのでやはり全く用途が違うのですが,あえて,mongoDBをKVSとして使うとどれくらい性能が落ちる(?)か試してみました.
まず,mongoDBに必要なライブラリ等をportsから入れます.
それから,mongoDB自体はソースを取ってきてコンパイルします.
> su # pushd /usr/ports/lang/spidermonkey && make && make install && popd # pushd /usr/ports/devel/scons && make && make install && popd # pushd /usr/ports/devel/boost-all && make && make install && popd # pushd /usr/ports/devel/libexecinfo && make && make install && popd # rehash # scons . # exit exit > wget http://downloads.mongodb.org/src/mongodb-src-r1.8.2.tar.gz > tar xvf mongodb-src-r1.8.2.tar.gz > cd mongodb-src-r1.8.2 > mkdir test_db > ./mongod --dbpath ./test_db/ Mon Jul 18 17:34:33 [initandlisten] MongoDB starting : pid=24421 port=27017 dbpath=./test_db/ 32-bit ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data ** see http://blog.mongodb.org/post/137788967/32-bit-limitations ** with --dur, the limit is lower Mon Jul 18 17:34:33 [initandlisten] db version v1.8.2, pdfile version 4.5 Mon Jul 18 17:34:33 [initandlisten] git version: nogitversion Mon Jul 18 17:34:33 [initandlisten] waiting for connections on port 27017 Mon Jul 18 17:34:33 [websvr] web admin interface listening on port 28017
へーwebのインターフェースも上がるんや...かっこいいなー
Redisも最新バージョンを入れます.
> wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz > tar xvf redis-2.2.12.tar.gz > cd redis-2.2.12 > make PREFIX=`pwd` > ./src/redis-server
さて,ドキュメント指向のmongoDBをKVSとして使うとどれくらい遅くなるか...
意外と頑張るモンゴが分かりました.
まず,バリュー長が10バイトの軽い場合.
絶対値で言うと倍くらいmongoが遅いですが,意外と頑張っている感じがします.
実際にはバリューが10バイトなんて無いと思うので,バリュー長を100バイトにしてベンチしてみました.
やっぱりmongoは意外に頑張ってます.
Redisがアクセススレッド数の多さで頭打ちになっているところを,mongoはアクセス数が増えても結構頑張ってます.
あと,このベンチのmongoDBでは,キーにインデックス貼ってます.
プログラム自体はまた今度...なにはともあれ,SQLとの対応表がオフィシャルサイトにあるくらい機能豊富なmongoDBが,ここまで速度的にも頑張るとは思っていませんでした.
次回は,本命のRiakやりますです.