+ All Categories
Home > Technology > Nosh slides mongodb web application - mongo philly 2011

Nosh slides mongodb web application - mongo philly 2011

Date post: 14-Jan-2015
Category:
Upload: mongodb
View: 1,235 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
24
http://mongodb.org http://10gen.com Building applications with MongoDB – An introduction MongoPhilly – April 26, 2011 Nosh Petigara [email protected] @noshinosh
Transcript
Page 1: Nosh slides   mongodb web application - mongo philly 2011

http://mongodb.orghttp://10gen.com

Building applications with MongoDB – An introduction

MongoPhilly – April 26, 2011

Nosh [email protected]

@noshinosh

Page 2: Nosh slides   mongodb web application - mongo philly 2011

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

Page 3: Nosh slides   mongodb web application - mongo philly 2011

Application Goals

PlacesCheck

ins

(1)Q: Current locationA: Places near location

(2) Add user generated content

(3) Record user checkins

(4) Stats about checkins

Page 4: Nosh slides   mongodb web application - mongo philly 2011

Documents

doc1 = {_id: 4b97e62bf1d8c7152c9ccb74,key1: value1,key2: value2,

key3: {..., ..., ...},

key4: [..., ..., ]

}

Page 5: Nosh slides   mongodb web application - mongo philly 2011

Collections

doc1, doc2, doc3

Places Users Checkins

doc3, doc4, doc5

doc6, doc7, doc8

Page 6: Nosh slides   mongodb web application - mongo philly 2011

place1 = {name: "10gen HQ”,address: ”134 5th Avenue 3rd Floor”,city: "New York”,zip: "10011”

}

db.places.find({zip:”10011”}).limit(10)

Places v1

Page 7: Nosh slides   mongodb web application - mongo philly 2011

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”})

Places v2

Page 8: Nosh slides   mongodb web application - mongo philly 2011

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]}})

Places v3

Page 9: Nosh slides   mongodb web application - mongo philly 2011

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"}, {.....}, {.....}]

}

Places v4

Page 10: Nosh slides   mongodb web application - mongo philly 2011

Creating your indexesdb.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”})

Querying your Places

Page 11: Nosh slides   mongodb web application - mongo philly 2011

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"}}}}

Inserting and updating places

Page 12: Nosh slides   mongodb web application - mongo philly 2011

$set, $unset, $rename

$push, $pop, $pull, $addToSet

$inc

Atomic Updates

Page 13: Nosh slides   mongodb web application - mongo philly 2011

Application Goals

PlacesCheck

ins

(1)Q: Current locationA: Places near location

(2) Add user generated content

(3) Record user checkins

(4) Stats about checkins

Page 14: Nosh slides   mongodb web application - mongo philly 2011

user1 = {name: “nosh”email: “[email protected]”,...checkins: [4b97e62bf1d8c7152c9ccb74,

5a20e62bf1d8c736ab]}

checkins [] = ObjectId reference to checkin collection

Users

Page 15: Nosh slides   mongodb web application - mongo philly 2011

checkin1 = {place: “10gen HQ”,

ts: 9/20/2010 10:12:00,

userId: <objectid of user>}

Check-in = 2 opsInsert check in object [checkin collection]Update ($push) user object [user collection]

Indexes:db.checkins.ensureIndex({place:1, ts:1})db.checkins.ensureIndex({ts:1})

Checkins

Page 16: Nosh slides   mongodb web application - mongo philly 2011

Application Goals

PlacesCheck

ins

(1)Q: Current locationA: Places near location

(2) Add user generated content

(3) Record user checkins

(4) Stats about checkins

Page 17: Nosh slides   mongodb web application - mongo philly 2011

Simple Statsdb.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()

Page 18: Nosh slides   mongodb web application - mongo philly 2011

Stats with MapReducemapFunc = function() {

emit(this.place, 1);}

reduceFunc = function(key, values) {return Array.sum(values);

}

db.checkins.mapReduce(mapFunc,reduceFunc, {query: {timestamp: {$gt:nowminus3hrs}}, out: “result”})

[{_id:”10gen HQ”, value: 17}, {…..}, {….}]

result.find({ value: {$gt: 15},_id: {$in: [….., ….., …..]}

})

Page 19: Nosh slides   mongodb web application - mongo philly 2011

Application Goals

PlacesCheck

ins

(1)Q: Current locationA: Places near location

(2) Add user generated content

(3) Record user checkins

(4) Stats about checkins

Page 20: Nosh slides   mongodb web application - mongo philly 2011

Single Master Deployments

Primary/Master

Secondary/Slave• Configure as a replica set for automated

failover

• Add more secondaries to scale reads

Page 21: Nosh slides   mongodb web application - mongo philly 2011

Auto Sharded Deployment

Primary/Master

Secondary/Slave

MongoS

•Autosharding distributes data among two or more replica sets• Mongo Config Server(s) handles distribution & balancing

• Transparent to applications

MongoConfig

Page 22: Nosh slides   mongodb web application - mongo philly 2011

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

Page 23: Nosh slides   mongodb web application - mongo philly 2011

Nosh [email protected] of Product Strategy, 10genhttp://mongodb.orghttp://10gen.com

-We are hiring!-@mongodb

[email protected]@noshinosh

Page 24: Nosh slides   mongodb web application - mongo philly 2011

MongoDB in Production


Recommended