Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mongodb_web_application_-_MongoDC_2011.ppt.pdf
Search
mongodb
July 11, 2011
Programming
480
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mongodb_web_application_-_MongoDC_2011.ppt.pdf
mongodb
July 11, 2011
More Decks by mongodb
See All by mongodb
NoSQL Now! 2012
mongodb
18
3.4k
MongoDB 2.2 At the Silicon Valley MongoDB User Group
mongodb
9
1.5k
Turning off the LAMP Hunter Loftis, Skookum Digital Works
mongodb
2
1.6k
Mobilize Your MongoDB! Developing iPhone and Android Apps in the Cloud Grant Shipley, Red Hat
mongodb
0
580
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
590
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
560
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.3k
Webinar Intro to Schema Design
mongodb
4
1.8k
Other Decks in Programming
See All in Programming
業務時間外もAIに働いてもらう話
colorful12
2
7.7k
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
150
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
240
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
160
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
170
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.3k
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
220
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
390
源内ハンズオン概要編
hideg
0
220
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
740
Deep dive into the select statement (GopherCon UK)
jespino
0
150
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
My Coaching Mixtape
mlcsv
0
300
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
A Tale of Four Properties
chriscoyier
163
24k
Claude Code のすすめ
schroneko
67
230k
Faster Mobile Websites
deanohume
310
32k
Ethics towards AI in product and experience design
skipperchong
2
350
The Curse of the Amulet
leimatthew05
2
14k
Transcript
http://mongodb.org http://10gen.com Building applications with MongoDB – An introduction MongoDC
– June 27, 2011 Nosh Petigara
[email protected]
@noshinosh
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
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
Documents doc1 = { _id: 4b97e62bf1d8c7152c9ccb74, key1: value1, key2:
value2, key3: {..., ..., ...}, key4: [..., ..., ] }
Collections doc1, doc2, doc3 Places Users Checkins doc3, doc4, doc5
doc6, doc7, doc8
place1 = { name: "10gen HQ”, address: ”134 5th
Avenue 3rd Floor”, city: "New York”, zip: "10011” } db.places.find({zip:”10011”}).limit(10) Places v1
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
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
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
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”}) Querying your 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"}}}}
$set, $unset, $rename $push, $pop, $pull, $addToSet $inc Atomic Updates
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
user1 = { name: “nosh” email: “
[email protected]
”, . . .
checkins: [4b97e62bf1d8c7152c9ccb74, 5a20e62bf1d8c736ab] } checkins [] = ObjectId reference to checkin collection Users
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}) Checkins
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
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)
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}})
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
Single Master Deployments Primary/Master Secondary/Slave • Configure as a replica set
for automated failover • Add more secondaries to scale reads
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 Mongo Config
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
Nosh Petigara
[email protected]
Director of Product Strategy, 10gen http://mongodb.org http://10gen.com
- We are hiring! - @mongodb
[email protected]
@noshinosh
MongoDB in Production