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
How MongoDB Works
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Uladzimir Mihura
February 01, 2013
Technology
260
1
Share
How MongoDB Works
Deck for a short talk I've given on a EPAM Software Engineering Conference 2013.
Uladzimir Mihura
February 01, 2013
More Decks by Uladzimir Mihura
See All by Uladzimir Mihura
What is to be a senior engineer?
trnl
1
370
Apache Cassandra
trnl
2
250
Other Decks in Technology
See All in Technology
新卒エンジニア研修、ハンズオンの設計における課題と実践知/ #tachikawaany
nishiuma
2
130
Databricks Academic Series 〜 大規模言語モデル / エージェント編 〜 / academic-series-llm
databricksjapan
0
110
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
310
ボトムアップの改善の火を灯し続けろ!〜支援現場で学んだ、消えないための3つの打ち手〜 / 20260509 Kazuki Mori
shift_evolve
PRO
2
590
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
150
Modernizing Your HCL Connections Experience: Visual Report to chain, Profile Enhancements, and AI Integration
wannesrams
0
290
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
210
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
3k
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
3
120
SLI/SLO、「完全に理解した」から「チョットデキル」へ
maruloop
1
130
会社説明資料|株式会社ギークプラス ソフトウェア事業部
geekplus_tech
0
190
OWASP APTSを眺めてみた
su3158
0
130
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
140
Writing Fast Ruby
sferik
630
63k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
240
Discover your Explorer Soul
emna__ayadi
2
1.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
540
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.4k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
140
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
530
Transcript
How MongoDB works Uladzimir Mihura Senior Software Engineer, EPAM Systems
Software Engineering Conference 2013
Data Model {name:'mongo', type:'DB'}
Data Model: Document oriented { _id: 1, name:
{ first: 'Michael', last: 'Faraday' }, birth: new Date('Sep 22, 1791'), death: new Date('Aug 25, 1867'), contribs: ['Chemistry', 'Electricity', 'Diamagnetism'] }
{ hello: 'SEC 2013'} \x19\x00\x00\x00 \x02hello \x09\x00\x00\x00 SEC 2013\x00 Data
Model: BSON
Data Model: Structure Document Collection Database MongoDB Instance
db.foo.find({name:'Niels', surname:'Bohr'}) Reading
• find, findOne • accepts a conditions object • regex,
strings, numbers, etc... • rich operators • $lt, $gt, $or, $and, $in, $ne, ... • projections • specify fields to return Reading: Dynamic Queries
Reading: Indexes • B-Tree • multiply fields • options •
unique • sparse • 2d • full text search (≥2.4) Di Lu Rh B C Cr Zo St Sa Ka H F B C Cr
Reading: Query Optimizer x x remember db.foo.find({ x: 10, y:'bar'})
index on y index on x full scan
Writing db.foo.insert({name:'Georg', surname:'Ohm'})
• Errors ignored (even network errors) • Unacknowledged (fire &
forget) • Acknowledged (write accepted) • Journaled • Propagated to the replica set members Writing: Write Concerns
Writing: Isolation db.foo.update( { field1 : 1 , $isolated
: 1 }, { $inc : { field2 : 1 } } , { multi: true } )
Storage Management {name:'mongo', type:'DB'}
Storage: Padding factor ... Padding Header BSON Data Padding Header
...
Storage: Directory Layout -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl
64M Jan 28 14:38 foo.0 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 128M Jan 28 14:26 foo.1 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 256M Jan 28 14:31 foo.2 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 512M Jan 28 14:38 foo.3 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 1.0G Jan 28 14:38 foo.4 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 2.0G Jan 28 14:38 foo.5 -‐rw-‐-‐-‐-‐-‐-‐-‐ 1 trnl trnl 16M Jan 28 14:38 foo.ns • Separate files per database • Aggressive preallocation
Storage: Memory mapped files foo.1 foo.2 foo.3 ... foo.n Virtual
Memory
Scaling {name:'mongo', type:'DB'}
Scaling: Replication Node 3 Primary Node 1 Secondary Node 2
Secondary Replication Replication client read read read write
Scaling: Replication Node 3 Primary Node 1 Primary Node 2
Secondary Replication client read read write
Scaling: Replication Node 3 Secondary Node 1 Primary Node 2
Secondary Replication client read read write read Replication
Scaling: Sharding Client mongos mongos ... mongod mongod mongod Replica
Set mongod mongod mongod Replica Set mongod mongod mongod Replica Set Shards mongod mongod mongod Config Servers
MongoDB Drivers Team @ 10gen
• MongoLab.com • MongoHQ.com • HostedMongo.com • MongoMachine.com • ObjectRocket
• etc Hosted Solutions
Thank you. Let’s ask. http://try.mongodb.org/ http://on.fb.me/bymongo/