More Related Content Similar to NoSQL を Ruby で実践するための n 個の方法 Similar to NoSQL を Ruby で実践するための n 個の方法 (20) More from Tomohiro Nishimura More from Tomohiro Nishimura (20) NoSQL を Ruby で実践するための n 個の方法13. CREATE TABLE cats (
id int NOT NULL,
name text,
PRIMARY KEY (id)
);
INSERT INTO cats VALUES (1, “tama”);
14. CREATE TABLE cats (
id int NOT NULL,
name text,
PRIMARY KEY (id)
);
INSERT INTO cats VALUES (1, “tama”);
16. $ mongo
> db.cats.insert({name: “tama”})
> db.cats.insert({
name: “goro”,
dapple_color: “gray”
})
> db.cats.find()
{ "_id" : ObjectId("4c49118783d1600c126d2147"), "name" : "tama" }
{ "_id" : ObjectId("4c49119983d1600c126d2148"), "name" : "goro", "dapple_color" : "gray" }
18. • Google BigTable
• amazon Dynamo
• HBase
• Apache Casandra
• CounchDB
• MongoDB
• and more
19. • Google BigTable
• amazon Dynamo
• HBase
• Apache Casandra
• CounchDB
• MongoDB
• and more
20. • Google BigTable
• amazon Dynamo
• HBase
• Apache Casandra
• CounchDB
• MongoDB
• and more
25. • (the simplicity and power of JSON-like data schemas)
•
• Index
•
• in-place
• large objects ( )
•
• sharding
• MapReduce
•
33. { "_id" : ###, "name" : "tama" }
{ "_id" : ###, "name" : "goro", "dapple_color" : "gray" }
34. { "_id" : ###, "name" : "tama" }
{ "_id" : ###, "name" : "goro", "dapple_color" : "gray" }
43. class Cats
include MongoMapper::Document
key :name, String
end
45. class Cats
include MongoMapper::Document
key :name, String
end
46. class Cats
include MongoMapper::Document
key :name, String
end
47. class Cats
include MongoMapper::Document
key :name, String
end
48. irb:001:0> Cats.create :name => 'tama'
irb:002:0> Cats.first
=> #<Cats name: "tama", _id: BSON::ObjectID('###')>
irb:003:0> Cats.create :name => 'goro', :dapple_color => ‘gray’
irb:004:0> Cats.count
=> 2
irb:005:0> Cats.first(:name => ‘goro’)
=> #<Cats name: "goro", dapple_color:”gray”,_id: ###>
49. Array, Binary, Boolean, Date, Float, Hash
Integer, Nil, ObjectId, Set, String, Time
Custom Type, and TypeLess
50. Array, Binary, Boolean, Date, Float, Hash
TypeLess
Integer, Nil, ObjectId, Set, String, Time
Custom Type, and TypeLess
53. irb:001:0> Storage.create :values => 25
irb:002:0> Storage.create :value => 'String'
irb:003:0> Cats.all
=> [#<Storage value: 25, _id: BSON::ObjectID('###')>,
#<Storage value: “String”, _id: BSON::ObjectID('###')>]
54. Array, Binary, Boolean, Date, Float, Hash
Integer, Nil, ObjectId, Set, String, Time
Custom Type, and TypeLess
56. class Family
include MongoMapper::Document
key :name, String
many :cats
end
class Cats
include MongoMapper::Document
key :name, String
key :family_id, ObjectId
belongs_to :family
end
57. class Person
include MongoMapper::Document
key :name, String
one :address
end
class Address
include MongoMapper::EmbeddedDocument
key :zipcode, String
key :street, String
end
59. • validates_presence_of :title
• validates_presence_of
• validates_length_of
• validates_format_of
• validated_numericality_of
• validates_acceptance_of
• validated_configmati
60. class Cats
include MongoMapper::Document
key :name, String
validates_presence_of :name
end
61. class Cats
include MongoMapper::Document
key :name, String, :required => true
end
62. class Cats
include MongoMapper::Document
key :name, String, :required => true
end
66. class Cats
include MongoMapper::Document
key :name, String
before_validation :add_nyan
private
def add_nyan
self.name += ‘ nyan’
end
end
70. module Charisma
def fly
puts “I’m flying”
end
end
MongoMapper::Document.
append_inclusions(Charisma)
Cats.first(:name => ‘tama’).fly
71. module Charisma
def fly
puts “I’m flying”
end
end
MongoMapper::Document.
append_inclusions(Charisma)
Cats.first(:name => ‘tama’).fly
78. URL
• http://www.mongodb.org/
• http://www.mongodb.org/display/DOCSJP/Home
• http://wiki.github.com/jnunemaker/mongomapper/
• http://gihyo.jp/dev/serial/01/ruby/0033