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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Bradley Whittington
October 03, 2013
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
51
Let's talk about Git
bradwhittington
0
110
Doing something new in an existing company culture
bradwhittington
0
140
Load Balancing 101
bradwhittington
1
510
Agile-ish is good enough
bradwhittington
1
590
PHP Addiction - or, teach someone about python
bradwhittington
2
670
Quick overview of MongoDB
bradwhittington
0
130
Other Decks in Technology
See All in Technology
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
570
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
[2026-08-25]AIによる自動化と人の介入、その狭間で揺れる信頼性についての俺の思いを、波よ聞いてくれ
tosite
0
120
AI × Datadog MCP でコスト削減まで実現した Metric Streams の導入
three_mouth_ago
0
130
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
87k
全社に広がるMCPサーバーを、 どう安全に管理するか MCPass開発の舞台裏
mtpooh
3
220
KAEN Company Deck
kaen
PRO
0
180
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
tamachi.goを支える技術
rymiyamoto
0
120
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
1
550
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
500
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
320
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
380
Building the Perfect Custom Keyboard
takai
2
860
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
Navigating Weather and Climate Data
rabernat
0
500
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
850
Skip the Path - Find Your Career Trail
mkilby
1
210
Prompt Engineering for Job Search
mfonobong
0
430
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
510
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
500
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?