Your SlideShare is downloading. ×
0
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Introduction to MongoDB
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction to MongoDB

1,177

Published on

Introduction to MongoDB. Uses example of a simple location-based application to introduce schema design, queries, updates, map-reduce, deployment

Introduction to MongoDB. Uses example of a simple location-based application to introduce schema design, queries, updates, map-reduce, deployment

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,177
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
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
  • Memory mapped files, BSON, indexes, multiple data types, binary files, etc
  • Memory mapped files, BSON, indexes, multiple data types, binary files, etc
  • Memory mapped files, BSON, indexes, multiple data types, binary files, etc
  • Memory mapped files, BSON, indexes, multiple data types, binary files, etc
  • Transcript

    • 1. http://mongodb.org http://10gen.com Building applications with MongoDB – An introduction MongoNYC – June 7, 2011 Nosh Petigara [email_address] @noshinosh
    • 2. Today’s Talk <ul><ul><li>MongoDB: Data modeling, queries, geospatial, updates, map reduce </li></ul></ul><ul><ul><li>Using a location-based app as an example </li></ul></ul><ul><ul><li>Example Works in MongoDB JS shell </li></ul></ul>
    • 3. Application Goals Places Check ins (1) Q: Current location A: Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
    • 4. Documents doc1 = { _id: 4b97e62bf1d8c7152c9ccb74 , key1: value1, key2: value2, key3: {..., ..., ...}, key4: [..., ..., ] }
    • 5. Collections doc1, doc2, doc3 Places Users Checkins doc3, doc4, doc5 doc6, doc7, doc8
    • 6. Places v1 place1 = { name: &quot;10gen HQ”, address: ”134 5 th Avenue 3 rd Floor”, city: &quot;New York”, zip: &quot;10011” } db.places.find({zip:”10011”}).limit(10)
    • 7. Places v2 place1 = { name: &quot;10gen HQ”, address: &quot;17 West 18th Street 8th Floor”, city: &quot;New York”, zip: &quot;10011”, tags: [“business”, “recommended”] } db.places.find({zip:”10011”, tags:”business”})
    • 8. Places v3 place1 = { name: &quot;10gen HQ”, address: &quot;17 West 18th Street 8th Floor”, city: &quot;New York”, zip: &quot;10011”, tags: [“business”, “cool place”], latlong: [40.0,72.0] } db.places.ensureIndex({latlong:”2d”}) db.places.find({latlong:{$near:[40,70]}})
    • 9. Places v4 place1 = { name: &quot;10gen HQ”, address: &quot;17 West 18th Street 8th Floor”, city: &quot;New York”, zip: &quot;10011”, latlong: [40.0,72.0], tags: [“business”, “cool place”], tips: [ {user:&quot;nosh&quot;, time:6/26/2010, tip:&quot;stop by for office hours on Wednesdays from 4-6pm&quot;}, {.....}, {.....} ] }
    • 10. Querying your Places Creating your indexes db.places.ensureIndex({tags:1}) db.places.ensureIndex({name:1}) db.places.ensureIndex({latlong:”2d”}) Finding places: db.places.find({latlong:{$near:[40,70]}}) With regular expressions: db.places.find({name: /^ typeaheadstring /) By tag: db.places.find({tags: “business”})
    • 11. Inserting and updating places Initial data load: db.places.insert(place1) Updating tips: db.places.update({name:&quot;10gen HQ&quot;}, {$push :{tips: {user:&quot;nosh&quot;, time:6/26/2010, tip:&quot;stop by for office hours on Wednesdays from 4-6&quot;}}}}
    • 12. Atomic Updates $set, $unset, $rename $push, $pop, $pull, $addToSet $inc
    • 13. Application Goals Places Check ins (1) Q: Current location A: Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
    • 14. Users user1 = { name: “nosh” email: “nosh@10gen.com”, . . . checkins: [ 4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab ] } checkins [] = ObjectId reference to checkin collection
    • 15. Checkins checkin1 = { place: “10gen HQ”, ts: 6/7/2011 10:12:00, userId: <objectid of user> } Check-in = 2 ops Insert check in object [checkin collection] Update ($push) user object [user collection] Indexes: db.checkins.ensureIndex({place:1, ts:1}) db.checkins.ensureIndex({ts:1})
    • 16. Application Goals Places Check ins (1) Q: Current location A: Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
    • 17. Simple Stats db.checkins.find({place: “10gen HQ”) db.checkins.find({place: “10gen HQ”}) .sort({ts:-1}).limit(10) db.checkins.find({place: “10gen HQ”, ts: {$gt: midnight}}).count() db.checkins.find().sort(ts:-1)}.limit(50)
    • 18. Stats with MapReduce mapFunc = function() { emit(this.place, 1);} reduceFunc = function(key, values) { return Array.sum(values); } db.checkins.mapReduce(mapFunc,reduceFunc, {query: {timestamp: {$gt:nowminus3hrs}}, out: “result”}) result = [{_id:”10gen HQ”, value: 17}, {…..}, {….}] db.result.find({ value: {$gt: 15}})
    • 19. Application Goals Places Check ins (1) Q: Current location A: Places near location (2) Add user generated content (3) Record user checkins (4) Stats about checkins
    • 20. Single Master Deployments <ul><li>Configure as a replica set for automated failover </li></ul><ul><li>Add more secondaries to scale reads </li></ul>Primary/Master Secondary/Slave
    • 21. Auto Sharded Deployment <ul><li>Autosharding distributes data among two or more replica sets </li></ul><ul><li>Mongo Config Server(s) handles distribution & balancing </li></ul><ul><li>Transparent to applications </li></ul>Primary/Master Secondary/Slave MongoS Mongo Config
    • 22. Use Cases <ul><li>RDBMS replacement for high-traffic web applications </li></ul><ul><li>Content Management-type applications </li></ul><ul><li>Real-time analytics </li></ul><ul><li>High-speed data logging </li></ul>Web 2.0, Media, SaaS, Gaming, Finance, Telecom, Healthcare
    • 23. Nosh Petigara [email_address] Director of Product Strategy, 10gen http://mongodb.org http://10gen.com <ul><li>We are hiring! </li></ul><ul><li>@mongodb </li></ul><ul><li>[email_address] </li></ul><ul><li>@noshinosh </li></ul>
    • 24. MongoDB in Production

    ×