NoSQL を Ruby で実践するための n 個の方法
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
7,425
On Slideshare
7,112
From Embeds
313
Number of Embeds
5

Actions

Shares
Downloads
39
Comments
1
Likes
8

Embeds 313

http://d.hatena.ne.jp 288
url_unknown 13
http://mahito.hatenablog.com 10
http://paper.li 1
http://a0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. NoSQL Ruby n
  • 2. NoSQL Ruby 1 n=1
  • 3. (@Sixeight)
  • 4. • NoSQL • MongoDB • MongoMapper •
  • 5. • NoSQL • MongoDB • MongoMapper •
  • 6. NoSQL
  • 7. SQL
  • 8. × SQL
  • 9. Not only SQL
  • 10. CREATE TABLE cats ( id int NOT NULL, name text, PRIMARY KEY (id) ); INSERT INTO cats VALUES (1, “tama”);
  • 11. CREATE TABLE cats ( id int NOT NULL, name text, PRIMARY KEY (id) ); INSERT INTO cats VALUES (1, “tama”);
  • 12. $ mongo > db.cats.insert({name: “tama”})
  • 13. $ 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" }
  • 14. • Google BigTable • amazon Dynamo • HBase • Apache Casandra • CounchDB • MongoDB • and more
  • 15. • Google BigTable • amazon Dynamo • HBase • Apache Casandra • CounchDB • MongoDB • and more
  • 16. • Google BigTable • amazon Dynamo • HBase • Apache Casandra • CounchDB • MongoDB • and more
  • 17. • NoSQL • MongoDB • MongoMapper •
  • 18. MongoDB by 10gen
  • 19. MongoDB C++ (wikipedia)
  • 20. MongoDB C++ (wikipedia)
  • 21. • (the simplicity and power of JSON-like data schemas) • • Index • • in-place • large objects ( ) • • sharding • MapReduce •
  • 22. ≒ ≒
  • 23. { "_id" : ###, "name" : "tama" }
  • 24. { "_id" : ###, "name" : "tama" } { "_id" : ###, "name" : "goro", "dapple_color" : "gray" }
  • 25. { "_id" : ###, "name" : "tama" } { "_id" : ###, "name" : "goro", "dapple_color" : "gray" }
  • 26. over 200 projects
  • 27. • NoSQL • MongoDB • MongoMapper •
  • 28. MongoMapper http://github.com/jnunemaker/mongomapper
  • 29. ActiveRecord API +
  • 30. gem install mongo_mapper
  • 31. class Cats include MongoMapper::Document key :name, String end
  • 32. irb
  • 33. class Cats include MongoMapper::Document key :name, String end
  • 34. class Cats include MongoMapper::Document key :name, String end
  • 35. class Cats include MongoMapper::Document key :name, String end
  • 36. 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: ###>
  • 37. Array, Binary, Boolean, Date, Float, Hash Integer, Nil, ObjectId, Set, String, Time Custom Type, and TypeLess
  • 38. Array, Binary, Boolean, Date, Float, Hash TypeLess Integer, Nil, ObjectId, Set, String, Time Custom Type, and TypeLess
  • 39. class Storage include MongoMapper::Document key :value end
  • 40. class Storage include MongoMapper::Document key :value end
  • 41. 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('###')>]
  • 42. Array, Binary, Boolean, Date, Float, Hash Integer, Nil, ObjectId, Set, String, Time Custom Type, and TypeLess
  • 43. 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
  • 44. class Person include MongoMapper::Document key :name, String one :address end class Address include MongoMapper::EmbeddedDocument key :zipcode, String key :street, String end
  • 45. • validates_presence_of :title • validates_presence_of • validates_length_of • validates_format_of • validated_numericality_of • validates_acceptance_of • validated_configmati
  • 46. class Cats include MongoMapper::Document key :name, String validates_presence_of :name end
  • 47. class Cats include MongoMapper::Document key :name, String, :required => true end
  • 48. class Cats include MongoMapper::Document key :name, String, :required => true end
  • 49. before / after
  • 50. validate, create, save
  • 51. class Cats include MongoMapper::Document key :name, String before_validation :add_nyan private def add_nyan self.name += ‘ nyan’ end end
  • 52. irb:001:0> Cats.create :name => 'tama' irb:002:0> Cats.first => #<Cats name: "tama nyan", _id: BSON::ObjectID('###')>
  • 53. module Charisma def fly puts “I’m flying” end end MongoMapper::Document. append_inclusions(Charisma) Cats.first(:name => ‘tama’).fly
  • 54. module Charisma def fly puts “I’m flying” end end MongoMapper::Document. append_inclusions(Charisma) Cats.first(:name => ‘tama’).fly
  • 55. • NoSQL • MongoDB • MongoMapper •
  • 56. MongoDB
  • 57. DB KVS RDBMS
  • 58. MongoMapper
  • 59. ActiveRecord MongoDB
  • 60. 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
  • 61. by http://www.wanpug.com/