NoSQL を Ruby で実践するための n 個の方法

  • 6,083 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
6,083
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
39
Comments
1
Likes
8

Embeds 0

No embeds

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/