从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のほうがよさそうでした
广告
将在 10 秒后关闭
bannerAds