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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introduction to MongoDB

  • 1,149 views
Published

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,149
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
39
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
      • MongoDB: Data modeling, queries, geospatial, updates, map reduce
      • Using a location-based app as an example
      • Example Works in MongoDB JS shell
  • 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: "10gen HQ”, address: ”134 5 th Avenue 3 rd Floor”, city: "New York”, zip: "10011” } db.places.find({zip:”10011”}).limit(10)
  • 7. Places v2 place1 = { name: "10gen HQ”, address: "17 West 18th Street 8th Floor”, city: "New York”, zip: "10011”, tags: [“business”, “recommended”] } db.places.find({zip:”10011”, tags:”business”})
  • 8. Places v3 place1 = { name: "10gen HQ”, address: "17 West 18th Street 8th Floor”, city: "New York”, zip: "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: "10gen HQ”, address: "17 West 18th Street 8th Floor”, city: "New York”, zip: "10011”, latlong: [40.0,72.0], tags: [“business”, “cool place”], tips: [ {user:"nosh", time:6/26/2010, tip:"stop by for office hours on Wednesdays from 4-6pm"}, {.....}, {.....} ] }
  • 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:"10gen HQ"}, {$push :{tips: {user:"nosh", time:6/26/2010, tip:"stop by for office hours on Wednesdays from 4-6"}}}}
  • 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
    • Configure as a replica set for automated failover
    • Add more secondaries to scale reads
    Primary/Master Secondary/Slave
  • 21. Auto Sharded Deployment
    • Autosharding distributes data among two or more replica sets
    • Mongo Config Server(s) handles distribution & balancing
    • Transparent to applications
    Primary/Master Secondary/Slave MongoS Mongo Config
  • 22. Use Cases
    • RDBMS replacement for high-traffic web applications
    • Content Management-type applications
    • Real-time analytics
    • High-speed data logging
    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
    • We are hiring!
    • @mongodb
    • [email_address]
    • @noshinosh
  • 24. MongoDB in Production