Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2011-MongoDC-Storage.pdf
Search
mongodb
July 12, 2011
Programming
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2011-MongoDC-Storage.pdf
mongodb
July 12, 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
590
Beanstalk Data - MongoDB In Production Chris Siefken, CTO Beanstalk Data
mongodb
0
600
New LINQ support in C#/.NET driver Robert Stam, 10gen
mongodb
9
41k
Welcome and Keynote Aaron Heckman, 10gen
mongodb
0
570
Webinar Introduction to MongoDB's Java Driver
mongodb
1
1.3k
Webinar Intro to Schema Design
mongodb
4
1.9k
Other Decks in Programming
See All in Programming
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
230
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Next.js: The final boss of Web Performance
guaca
0
260
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
golang-bob.pdf
iwatsukayura
0
130
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
ジョジョの世界をXRで再現する
mofurune
0
170
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Optimizing for Happiness
mojombo
378
71k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Marketing to machines
jonoalderson
1
5.9k
For a Future-Friendly Web
brad_frost
184
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Technical Leadership for Architectural Decision Making
baasie
3
600
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
New Earth Scene 8
popppiees
4
2.7k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Transcript
Eliot Horowitz @eliothorowitz MongoDC June 27, 2011 Storage and Journalling
Directory Layout -rw------- 1 erh admin 64M Jun 26 00:15
test.0 -rw------- 1 erh admin 128M Jun 21 00:20 test.1 -rw------- 1 erh admin 256M Jun 26 00:15 test.2 -rw------- 1 erh admin 512M Jun 21 00:20 test.3 -rw------- 1 erh admin 1.0G Jun 26 00:15 test.4 -rw------- 1 erh admin 2.0G Jun 25 23:08 test.5 -rw------- 1 erh admin 16M Jun 26 00:15 test.ns •Separate files per database •Aggressive preallocation •Always spare file
Internal File Format • Files broken into extents • A
collection has 1 to many extents • Grow exponentially up to 2gb (max file size as well) • Indexes have different extents than data
Sample Extents > db.foo.validate( { full : true } ).extents.forEach(
function(z){ print( z.loc + "\t\t" + z.size ); } ) 0:3000 20480 0:12000 81920 0:26000 327680 0:76000 1310720 0:1da000 5242880 0:76a000 6291456 0:d6a000 7553024 0:16de000 9064448 0:1f83000 10878976 0:29e3000 13058048 1:2000 15671296 1:ef4000 18808832 1:29e4000 22573056 1:3f6b000 27090944 1:5941000 32509952
Index Extents > db.system.namespaces.find() { "name" : "test2.foo" } {
"name" : "test2.system.indexes" } { "name" : "test2.foo.$_id_" } > db["foo.$_id_"].validate( { full : true } ).extents.forEach( function(z){ print( z.loc + "\t\t" + z.size ); } ) 0:9000 36864 0:1b6000 147456 0:6da000 589824 0:149e000 2359296 1:20e4000 9437184
Memory Mapped • All data files memory mapped • Virtual
size = total data size + overhead • Journaled virtual size = ( total data size * 2 ) + overhead • fsync every 60 seconds (--syncdelay)
Journalling • Write ahead log • Operations written to journal
before memory mapped regions • Once journal written, data safe unless hardware problem
When is Data Written • Journal flushed every 100ms or
100mb written • j=true flag to force a journal flush
Journal Admin • /journal sub directory in <dbpath> (/data/ db)
• 3 1gb files that get rotated • Can symlink to a different spindle
Performance • On 99.9% read systems, no impact • Write
performance 5-30% slowdown on same drive • Using separate drive as low as 3%
When to use • Single node - required for any
data integrity • Replica Set - at least 1 node • All nodes for large data sets removes need for large resyncs
Fragmentation • Files can get fragmented over time if documents
change size • Need to improve free list
Compacting • 1.8 and previous: repairDatabase • 2.0+ : compact
command
drop/dropDatabase • drop: frees extents, not data files • dropDatabase:
frees files
update and moves • Updates can make documents bigger •
Moves are more expensive than other operations
padding • adaptive padding between 1.0 and 2.0 • manual
control coming
Download MongoDB http://www.mongodb.org and let us know what you think
@eliothorowitz @mongodb 10gen is hiring! http://www.10gen.com/jobs