DB

MongoDBをさわってみた ~インストールから簡単なコマンドまで~

OSは64bitのCentOS5
パッケージからインストールしようと思っていたけど、yum経由でも行けることが分かったので、そっちでやってみる。

以下参考にさせていただきました。

Start and Stopping Mongo – mongo DB
2.0からはじめるMongo DB – 第1回 – 今日も適当ダイアリー

インストールから起動まで

1.リポジトリの登録

/etc/yum.repos.d/10gen.repoに以下を記述し、リポジトリを登録する。

[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0

2.yumでインストール

$ sudo yum install mongo-10gen mongo-10gen-server

3.MongoDBサーバを起動

$ sudo /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
[ OK ]

※起動後には、/var/log/mongo/mongod.logにログがたまるらしい。

4.chkconfigで自動起動の対象とする

$ sudo chkconfig --add mongod
$ sudo chkconfig mongod on

5.動作確認

$ mongo
MongoDB shell version: 2.0.4
connecting to: test
>

テスト用DBにアクセスできた。

使ってみる

1.データの挿入

データの挿入はsaveで

$ mongo
MongoDB shell version: 2.0.4
connecting to: test
> db.hogehoge.save({item:1});

こっちからでは何も反応がないが、ログを見ると以下のようなものが吐き出されていた。

Wed Apr 4 17:19:42 [FileAllocator] allocating new datafile /var/lib/mongo/test.ns, filling with zeroes...
Wed Apr 4 17:19:42 [FileAllocator] creating directory /var/lib/mongo/_tmp
Wed Apr 4 17:19:43 [FileAllocator] done allocating datafile /var/lib/mongo/test.ns, size: 16MB, took 0.61 secs
Wed Apr 4 17:19:43 [FileAllocator] allocating new datafile /var/lib/mongo/test.0, filling with zeroes...
Wed Apr 4 17:19:46 [FileAllocator] done allocating datafile /var/lib/mongo/test.0, size: 64MB, took 2.867 secs
Wed Apr 4 17:19:46 [FileAllocator] allocating new datafile /var/lib/mongo/test.1, filling with zeroes...
Wed Apr 4 17:19:46 [conn5] build index test.hogehoge { _id: 1 }
Wed Apr 4 17:19:46 [conn5] build index done 0 records 0.003 secs
Wed Apr 4 17:19:46 [conn5] insert test.hogehoge 3517ms
Wed Apr 4 17:19:50 [FileAllocator] done allocating datafile /var/lib/mongo/test.1, size: 128MB, took 4.601 secs
Wed Apr 4 17:20:18 [clientcursormon] mem (MB) res:14 virt:373 mapped:80

で、show dbsコマンドを叩いてみると、ちゃんとデータが作成されている。

> show dbs;
local (empty)
test 0.203125GB

2.データの参照

データの参照はfindで

> db.hogehoge.find();
{ "_id" : ObjectId("4f7c041e393e64b7cc923c2e"), "item" : 1 }

使ってみた感想は非常にお手軽な感じ。
ただ、コマンドを実行するときはenterではなくctrl+spaceだということに無駄に時間くった。。