MongoDB in Denver: What's New In MongoDB 3.0

Post on 15-Jul-2015

675 views 2 download

Transcript of MongoDB in Denver: What's New In MongoDB 3.0

Let the Tiger Roar!

MongoDB 3.0

Bryan ReineroUS Developer Advocate bryan@mongodb.com@blimpyacht

Agenda

• MongoDB 3.0• Pluggable Storage Engine API• Storage Engines

– MMAPv1– WiredTiger– WT vs MMAPv1

• Improvements

MongoDB 3.0

http://www.pixelresort.com/wp-content/uploads/2013/06/3point0.jpg

MongoDB 3.0 is a bag full of goodies!

Storage Engine

http://files.ecomagination.com/wp-content/uploads/2012/08/PowerHaul-Engine-Green_844x680.jpg

How does MongoDB persist data?

• <= MongoDB 2.6– One unique mechanism using Memory Mapped Files– "mmapv1" Storage Engine

• MongoDB 3.0 has a few more options– mmapv1 – default– wiredTiger– (in_memory – experimental only)

Pluggable Storage Engine API

http://www.livingincebuforums.com/ipb/uploads/monthly_10_2011/post-198-0-67871200-1318223706.jpg

Storage Engine API

• Allows to "plug-in" different storage engines– Different work sets require different performance

characteristics – mmapv1 is not ideal for all workloads– More flexibility

• Can mix storage engines on same replica set/sharded cluster

• Opportunity to integrate further ( HDFS, native encrypted, hardware optimized …)

MMAPv1

https://angrytechnician.files.wordpress.com/2009/05/memory.jpg

MMAPv1

MMAPv1

• Improved concurrency control• Great performance on read-heavy workloads• Data & Indexes memory mapped into virtual

address space

• Data access is paged into RAM

• OS evicts using LRU

• More frequently used pages stay in RAM

WiredTiger

What is WiredTiger?

• Storage engine company founded by BerkeleyDB alums• Recently acquired by MongoDB• Available as a storage engine option in MongoDB 3.0

Why is WiredTiger Awesome

• Document-level concurrency• Disk Compression• Consistency without journaling• Better performance on certain workloads

– write heavy

Improving Concurrency

• 2.2 – Global Lock • 2.4 – Database-level Locking• 3.0 MMAPv1 – Collection-level Locking• 3.0 WT – Document-level

– Writes no longer block all other writes– Higher level of concurrency leads to more

CPU usage

Compression

• WT uses snappy compression by default• Data is compressed on disk• 2 supported compression algorithms

– snappy: default. Good compression, relatively low overhead

– zlib: Better• Indexes are compressed using prefix

compression– Allows compression in memory

Consistency without Journaling

• MMAPv1 uses write-ahead log (journal) to guarantee consistency

• WT doesn't have this need: no in-place updates– Write-ahead log committed at checkpoints

• 2GB or 60sec by default – configurable!– No journal commit interval: writes are written to

journal as they come in– Better for insert-heavy workloads

• Replication guarantees the durability

MMAPv1 vs. WT

How to run MMAPv1

• MMAPv1 is the default

How to run WT

• mongod now has --storageEngine option

MMAPv1 Database Files

• MMAPv1 persists data to files per databases – Indexes – Data

WT Database Files

• Each collection & indexes stored in own file

Playing nice together

• Can not– Can't copy database files– Can't just restart w/ same dbpath

• Yes we can!– Initial sync from replica set works perfectly!– mongodump/restore

• Rolling upgrade of replica set to WT:– Shutdown secondary – Delete dbpath – Relaunch w/ --storageEngine=wiredTiger– Rollover

Other WT configuration options

• Compression: --wiredTigerCollectionBlockCompressor

• YAML format for configuration

Gotcha's!!!

• No 32-bit Support– WT is 64bit only

• system.indexes & system.namespaces deprecated– Explicit commands: db.getIndexes() db.getCollectionNames()

https://tingbudongchine.files.wordpress.com/2012/08/lemonde1.jpeg

Small Demo

Improvements

Benefits

Wider Range of Use Cases

How: Flexible Storage Architecture• Fundamental rearchitecture, with new pluggable storage engine API• Same data model, same query language, same ops• But under the hood, many storage engines optimized for many use

cases

Single View Content Management

Real-Time Analytics Catalog

Internet of Things (IoT)Messaging

Log Data Tick Data

Up to 95% Lower Operational Overhead

How: MongoDB Ops Manager• The best way to run MongoDB• Automates core management

tasks• Single-click provisioning, scaling,

upgrades, administration• Monitoring, with charts,

dashboards & alerts on 100+ metrics

• Backup and restore, with point-in-time recovery

7x-10x Performance, 50%-80% Less StorageHow: WiredTiger Storage Engine• Same data model, same query

language, same ops• Write performance gains driven

by document-level concurrency control

• Storage savings driven by native compression

• 100% backwards compatible• Non-disruptive upgrade

MongoDB 3.0MongoDB 2.6

Performance

http://www.humanandnatural.com/data/media/178/badan_jaran_desert_oasis_china.jpg

Please go and test it!

3.0.1 https://www.mongodb.org/downloadshttps://jira.mongodb.org/secure/Dashboard.jspa

http://www.tinypm.com/blog/wp-content/uploads/2015/01/hammer.jpg

http://www.humanandnatural.com/data/media/178/badan_jaran_desert_oasis_china.jpg

Questions?

@nleitenorberto@mongodb.com

http://www.mandywalker.com.au/wp-content/uploads/2013/07/Wall-with-Tools.jpg

We are hiring!

http://www.mongodb.com/careers/positions/consulting-engineer-emea

Register now: mongodbworld.com

Super Early Bird Ends April 3!Use Code BryanReinero for additional 25% Off

*Come as a group of 3 or more – Save another 25%