ただのにっき
2011-11-16(水) [長年日記]
■ Debian squeezeにMongoDB / Mongoid環境を作る
仕事でちょっとしたデータベースが必要になったときは(スキーマレスが良いということもあり)KVSのKyotoCabinetを使ってきたのだけど、ちょっと不定形なデータを入れる必要が出てきたので、MongoDBを使ってみることに。いまごろ。ま、普通にパッケージで入れればいいよね:
% sudo aptitude install mongodb ...同時ににmongodb-clients、mongodb-server、mongodb-devが入る % mongo MongoDB shell version: 1.4.4 url: test connecting to: test type "help" for help > show dbs admin local > exit bye
ふむん。Rubyから扱うのはMongoidが良いそうなので:
% gem install mongoid bson_ext % irb -rmongoid irb(main):001:0> Mongoid.configure {|conf| conf.master = Mongo::Connection.new.db('test')} Mongoid::Errors::UnsupportedVersion: MongoDB 1.4.4 not supported, please upgrade to 2.0.0. from /home/sho/lib/ruby/gems/1.9.1/gems/mongoid-2.3.3/lib/mongoid/config.rb:294:in `check_database!' from /home/sho/lib/ruby/gems/1.9.1/gems/mongoid-2.3.3/lib/mongoid/config.rb:217:in `master=' from (irb):1:in `block in irb_binding' from /home/sho/lib/ruby/gems/1.9.1/gems/mongoid-2.3.3/lib/mongoid.rb:115:in `configure' from (irb):1 from /home/sho/bin/irb:12:in `<main>' irb(main):002:0>
ぐは。パッケージが最新版ではないというのはDebianの宿命だなー。でも野良ビルドするのはイヤだなぁ……と渋っていたら、MongoDBの公式パッケージがあると知ったので、ここに書かれているとおりにしてみた。こういうのは嬉しいですね:
% sudo aptitude remove mongodb #Debianのパッケージはとりあえず削除 % sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 ... gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com ...
ちくしょー(笑)。これはPROXYの内側にいるせいだ。で、回避策を発見したのでそのように。keyの値はいったんapt/source.listに追加した結果出てきたものを使った:
% gpg --keyserver keyserver.ubuntu.com --keyserver-option http-proxy=YOUR_PROXY_SERVER:8080 --recv-keys 9ECBEC467F0CEB10 ... gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) % gpg --fingerprint 9ECBEC467F0CEB10 pub 2048R/7F0CEB10 2010-02-05 Key fingerprint = 492E AFE8 CD01 6A07 919F 1D2B 9ECB EC46 7F0C EB10 uid Richard Kreuter <richard@10gen.com> sub 2048R/A89B0149 2010-02-0 % gpg --armor --export 9ECBEC467F0CEB10 | sudo apt-key add - OK
もう大丈夫だろう(たぶん):
% sudo vi /etc/apt/sources.list # 「deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen」を追加 % sudo aptitude update % sudo aptitude install mongodb-10gen % irb -rmongoid irb(main):001:0> Mongoid.configure {|conf| conf.master = Mongo::Connection.new.db('test')} => #<Mongo::DB:0x9debea4 @name="test"...(略) irb(main):002:0> class Person; include Mongoid::Document; end => Person irb(main):002:0> person = Person::new( :name => 'tdtds', :age => 14 ) irb(main):003:0> person.name => "tdtds" irb(main):004:0> person.age => 14 irb(main):005:0> person.save => true irb(main):006:0> exit % mongo MongoDB shell version: 2.0.1 connecting to: test > show dbs local (empty) test 0.0625GB > show collections people system.indexes > db.people.find() { "_id" : ObjectId("4ec47750ebbc3c1c3d000001"), "name" : "tdtds", "age" : 14 }
よろしい。今日はここまで(えっ)。