4. NoSQL = Non-relational next generation operation data stores and databases no joins + light transactional semantics = horizontally scalable architectures
5. Scaling Out distribution & query models Consistent hashing Order preserving range chunking Scatter gather
6. Data models no joins + light transactional semantics = horizontally scalable architectures Important side effect : new data models = improved ways to develop apps (“Agility”)
7.
8. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah” }
9. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah”, tags : [“business”, “news”, “north america”] } > db.posts.find( { tags : “news” } )
10. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah”, tags : [“business”, “news”, “north america”], votes : 3, voters : [“dmerr”, “sj”, “jane” ] }
11. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah”, tags : [“business”, “news”, “north america”], votes : 3, voters : [“dmerr”, “sj”, “jane” ], comments : [ { by : “tim157”, text : “great story” }, { by : “gora”, text : “i don’t think so” }, { by : “dmerr”, text : “also check out...” } ] }
12. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah”, tags : [“business”, “news”, “north america”], votes : 3, voters : [“dmerr”, “sj”, “jane” ], comments : [ { by : “tim157”, text : “great story” }, { by : “gora”, text : “i don’t think so” }, { by : “dmerr”, text : “also check out...” } ] } > db.posts.find({title:”Too Big to Fail”}) `
13. { _id : ObjectId("4e2e3f92268cdda473b628f6"), title : “Too Big to Fail”, when : Date(“2011-07-26”), author : “joe”, text : “blah”, tags : [“business”, “news”, “north america”], votes : 3, voters : [“dmerr”, “sj”, “jane” ], comments : [ { by : “tim157”, text : “great story” }, { by : “gora”, text : “i don’t think so” }, { by : “dmerr”, text : “also check out...” } ] } > db.posts.find( { “comments.by” : “gora” } ) > db.posts.ensureIndex( { “comments.by” : 1 } )
14. the db space 2000 - 2010 + great for complex transactions + great for tabular data + ad hoc queries easy - O<->R mapping hard - speed/scale challenges - not super agile + ad hoc queries easy + SQL gives us a standard protocol for the interface between clients and servers + scales horizontally better than operational dbs. some scale limits at massive scale - schemas are rigid - real time is hard; very good at bulk nightly data loads
15. the db space 2000 - 2010 + great for complex transactions + great for tabular data + ad hoc queries easy - O<->R mapping hard - speed/scale challenges - not super agile + ad hoc queries easy + SQL gives us a standard protocol for the interface between clients and servers + scales horizontally better than operational dbs. some scale limits at massive scale - schemas are rigid - real time is hard; very good at bulk nightly data loads
16. the db space 2000 - 2010 + great for complex transactions + great for tabular data + ad hoc queries easy - O<->R mapping hard - speed/scale challenges - not super agile + ad hoc queries easy + SQL gives us a standard protocol for the interface between clients and servers + scales horizontally better than operational dbs. some scale limits at massive scale - schemas are rigid - real time is hard; very good at bulk nightly data loads
17. the db space + fits OO programming well + agile + speed/scale - querying a little less add hoc - not super transactional - not sql
18. Thanks Dwight Merriman CEO 10gen http://blog.mongodb.org/ @mongodb me - @dmerr jobs@10gen.com www.mongodb.org www.mongodb.org/display/DOCS/Events