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
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
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
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
370
信頼性の目標を誰も求めてない
shubox
0
140
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
660
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
450
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
150
不幸な GC
chencmd
0
800
業務時間外もAIに働いてもらう話
colorful12
2
7.7k
Cloudflare is Agents
chimame
0
180
AIの中の人になってみる
htkym
0
130
Press start. Python's next generation.
willingc
PRO
3
240
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
480
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
WENDY [Excerpt]
tessaabrams
11
39k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
500
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
490
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
670
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Designing Experiences People Love
moore
143
24k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
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