MongoDB
NoSQLデータベース。なんか流行ってるらしい
RubyバインディングはMongoidがいいらしい
MongoLab
ホスティングサービス。240MBまで無料https://mongolab.com/about/products/#/pricing
herokuと簡単に連携でき、どちらもAmazon EC2だからレイテンシが少ないらしい
容量超過すると、自動的に従量課金されるらしい Q. What happens if I exceed my for-pay database's storage limit? When your database goes over its limit, we'll charge a reasonable overage fee (metered daily and measured by the byte)
GUI
Windowsなら、MongoVUEが素直でよさげhttp://www.mongodb.org/display/DOCS/Admin+UIs#AdminUIs-MongoVUE
Mongoid
レコードがあったら取得する。なかったら初期値を指定して作成
検索条件はidに限らない。※find_or_create_by()の方がatomicっぽいけど、2回アクセスが発生しそう。どっちがいいんだろ record = Model.find_or_initialize_by(id: 1234) if record.new? # ... 初期値設定 record.save! end
整数のサイズ
Mongoidなら、32bit超えの値もRuby同様気にしなくていいらしい。自動でNumberLongになっている。 Railsで使用時、ActiveRecord::ConnectionNotEstablished が出る
http://stackoverflow.com/questions/9444265/mongodb-mongoid-rails-3-1-error-with-active-record
MongoMapperで、undefined method `collection' for nil:NilClass
トレースはこんな感じmongo_mapper (0.11.1) lib/mongo_mapper/plugins/persistence.rb:49:in `collection' mongo_mapper (0.11.1) lib/mongo_mapper/plugins/querying.rb:67:in `query' mongo_mapper (0.11.1) lib/mongo_mapper/plugins/sci.rb:24:in `query'
データベースに接続できていないとこうなるらしい。
MongoMapperのcreate!の罠
Mongoid::Documentではcreate!にブロックが渡せるが、MongoMapper::Documentでは渡せないらしい。f*ckmongo_mapper-0.11.1 で確認。
saveでUPDATEが走らないことがある
メンバに代入しても、値が変わってなかったらsaveがスキップされるhttp://two.mongoid.org/docs/documents/dirty.html |