mongoDBをmacにインストール
ドキュメント指向のDBってやつはどんな感じか知りたくてmongoDBを使ってみることにした。
http://www.mongodb.org/display/DOCS/Home:mongoDB
mongoDBの特徴は以下の通り
先に使ってみた感想を上げてみると、
一般的なRDBと比べてよかったところは
- インストールらくちん
- シンプル
- 柔軟
短所(?)は
- トランザクションがない(たぶん)
ということで、たぶん簡単なシステムだとmongoDBはかなり魅力的だとおもう。
あとオブジェクト指向やアジャイル開発と相性が良さそう。
でもトランザクションとかがガッツリ必要なものは無理っぽい。
rack+sinatra+mongoDBとか素敵な組み合わせに見える
インストール方法
まずダウンロード
http://www.mongodb.org/display/DOCS/Downloads:ここからMac64bitの1.1.4をダウンロードもしくは
wget http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.1.4.tgz
そんで解凍
tar zxvf mongodb-osx-x86_64-1.1.4.tgz
配置
cd mongodb-osx-x86_64-1.1.4 sudo cp bin/* /usr/local/bin/ sudo cp -r include/* /usr/local/include/ sudo cp lib/libmongoclient.a /usr/lib/
デーモンの起動
mkdir db mongod --dbpath ~/db
これで使えるようにになったはず。
rubyからmongoDBを使ってみる
まずライブラリをインストール
sudo gem install gemcutter sudo gem tumble sudo gem install mongo sudo gem install mongo_ext
そんでgithubにのってたコードを実行
http://github.com/mongodb/mongo-ruby-driver:mongo-ruby-driver
require 'rubygems' require 'mongo' include Mongo #dbにコネクションはる @db = Connection.new.db('sample-db') #コレクションをつくる(rdbでいうスキーマみたいなもんだと思う) @coll = db.collection('test') #コレクションの中身をとりあえず全削除 @coll.remove #insert処理 3.times do |i| @coll.insert({'a' => i+1}) end puts "There are #{@coll.count()} records. Here they are:" @coll.find().each { |doc| puts doc.inspect }
そしたら
$ ruby test.rb There are 3 records. Here they are: {"_id"=>4b1a99c40b965d1e66000001, "a"=>1} {"_id"=>4b1a99c40b965d1e66000002, "a"=>2} {"_id"=>4b1a99c40b965d1e66000003, "a"=>3}
ってなった。かんたん。
ためしに
require 'rubygems' require 'mongo' include Mongo @db = Connection.new.db('sample-db') @coll = @db.collection('test') @coll.remove 3.times do |i| @coll.insert('a' => i + 1) end #ここを追加 @coll.insert('unko' => "hoge") puts "There are #{@coll.count()} records. Here they are:" @coll.find().each { |doc| puts doc.inspect }
ってやったら
$ ruby test.rb There are 4 records. Here they are: {"_id"=>4b1a9a440b965d1e6f000001, "a"=>1} {"_id"=>4b1a9a440b965d1e6f000002, "a"=>2} {"_id"=>4b1a9a440b965d1e6f000003, "a"=>3} {"_id"=>4b1a9a440b965d1e6f000004, "unko"=>"hoge"}
ってなった。おもろい。