从Ruby Toolbox上查看与MongoDB相关的gem
我要在Ruby Toolbox的MongoDB Clients中查找看起来活跃的选项。
MongoDB (一种数据库管理系统)
-
- ドキュメント指向データベースの一つ
-
- RDBライクな検索クエリ
-
- スキーマレス
任意のフィールドを好きなときに追加できる
レプリケーション、オートフェイルオーバー、レンジパーティション、バランシング機能あり
Read/Writeの性能は高い
好きなプログラム言語からアクセスできるAPIや、RESTインターフェースあり
性能関連はこのへん見ると分かる
MongoDBが適さないものとか
蒙古国的刺绣
-
- MongoidはMongoDBのObject-Document-Mapper(ODM)
-
- 現在のバージョンは3系統がメイン、4.0.0alpha2が最近出た
-
- 大体の使い方はsample.rbみたいな感じ
ActiveRecordに近い(かなぁ?)
サンプルコード
class Artist
include Mongoid::Document
field :name, type: String
embeds_many :instruments
end
class Instrument
include Mongoid::Document
field :name, type: String
embedded_in :artist
end
syd = Artist.where(name: "Syd Vicious").between(age: 18..25).first
syd.instruments.create(name: "Bass")
syd.with(database: "bands", session: "backup").save!
-
- フィールドを定義して、関連をつくって
関連はembeds_~で作られるものと、ActiveRecordでお馴染みのhas_one、has_manyなどリレーショナルな関連がある
蒙哥·鲁比驱动程序
-
- MongoDBの本家で作ってる(?)
-
- ドキュメント読むと、対応するRubyのバージョンが1.8.7と1.9.3となっているので若干古いかな
と思ったらGithubのほうは2.0.0に言及してましたね
Githubから引っ張ってきたサンプルコードを見ると、Mongoidと違って、MongoDBを操作するというイメージかな
サンプルコード
require 'mongo'
# connecting to the database
client = Mongo::Client.new # defaults to localhost:27017
db = client['example-db']
coll = db['example-collection']
# inserting documents
10.times { |i| coll.insert({ :count => i+1 }) }
# finding documents
puts "There are #{coll.count} total documents. Here they are:"
coll.find.each { |doc| puts doc.inspect }
# updating documents
coll.update({ :count => 5 }, { :count => 'foobar' })
# removing documents
coll.remove({ :count => 8 })
coll.remove
一比较的话
-
- Mongoidのほうが抽象度は高く、ActiveRecord使ってる人ならわかりやすい
-
- Ruby Driverは生のAPIをRubyから触れるようにしました、というイメージが否めない
- 開発のアクティブさやRubyで使うなら……ということを考えるとMongoidのほうがよさそうでした