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
The things I've seen, living with MongoDB
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Bradley Whittington
October 03, 2013
Technology
130
0
Share
The things I've seen, living with MongoDB
A short talk through some of the lessons learned about MongoDB at Motribe and Mxit
Bradley Whittington
October 03, 2013
More Decks by Bradley Whittington
See All by Bradley Whittington
Black Friday 2017 talk at Cape Town DevOps meetup
bradwhittington
0
43
Let's talk about Git
bradwhittington
0
86
Doing something new in an existing company culture
bradwhittington
0
140
Load Balancing 101
bradwhittington
1
490
Agile-ish is good enough
bradwhittington
1
560
PHP Addiction - or, teach someone about python
bradwhittington
2
650
Quick overview of MongoDB
bradwhittington
0
110
Other Decks in Technology
See All in Technology
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
160
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
37k
CloudTrail を見つめ直してみる
kazzpapa3
1
120
AgentCore Managed Harness を使ってみよう
yakumo
2
240
Keeping Ruby Running on Cygwin
fd0
0
180
マルチプロダクトの信頼性を効率良く保っていくために
kworkdev
PRO
0
170
ServiceNow Knowledge 26 の歩き方
manarobot
0
180
"おまじない"を卒業する ボイラープレート再入門
shunsuke_1b
1
110
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
230
AWS DevOps Agentはチームメイトになれるのか?/ Can AWS DevOps Agent become a teammate
kinunori
6
770
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
200
目的ファーストのハーネス設計 ~ハーネスの変更容易性を高めるための優先順位~
gotalab555
8
2.4k
Featured
See All Featured
Between Models and Reality
mayunak
3
270
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Done Done
chrislema
186
16k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
810
Speed Design
sergeychernyshev
33
1.6k
Context Engineering - Making Every Token Count
addyosmani
9
840
Technical Leadership for Architectural Decision Making
baasie
3
340
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Transcript
The things I’ve seen, living with MongoDB Brad Whittington VP
web products - Mxit
What we use MongoDB for Primary data store for a
few consumer products. Motribe mobile social network - JudgeME & MxPix Mxit Launch
JudgeMe
None
Polytechnical university of hardknocks 1 week into my new job…
Zero MongoDB experience Massive crashes and timeouts on our cluster Hundreds of requests per minute
MongoDB docs == MongoDB + EC2 =
db.serverStatus() rs.add(...) MMS
MongoSQL? Mongo is *not* a relational database This is bad:
{ _id:... friend_id:... user_id:... }
The Data is Hot If you can’t fit all your
data in RAM, make sure you are kind to your (network connected) hard drives. Reads from (networked) disks are (incredibly) slow.
sort by rand() limit 1 MongoDB is all… One Solution!
(see the help pages for more) Add random geospatial positions Geospatial indexing Query for objects near [x,y] Disks are all like
I wish we had Capped Arrays*... Database with Capped Collections.Totally
okay. For the first n00 000 collections. Then it’s a bad idea. A very bad idea. * Available in MongoDB 2.4
A fresh start. Mxit Launch Platform for app creation Aim
for ±single document per request Cache cleverly, aggressively Database per app 300 authors 9M pageviews/month 2M unique users 4 m1.small 1 amazon core, 1.7GB ram
A fresh lesson Doing ensureIndex(..., {background:true}) inline in the request
is sub-optimal. 60 indexing processes 3M document collection (not fully in RAM) Not ideal.
db.currentOp() db.killOp() db.repair() db.currentOp().inprog.forEach( function(d){ if(d.waitingForLock && d.lockType != "read")
printjson(d) })
MongoDB Love • Mongo terminal is JS • Recovery is
quick, easy • Sharding is easy • Indexes are lovely • Be careful in your architecture / queries. Pure index queries are ++ • MongoDB is not a Relational DB
Read http://aphyr.com/tags/jepsen Aphyr / Jepsen / Call me maybe
@darb github.com/bradwhittington speakerdeck.com/u/bradwhittington/ Questions?