Introduction to 3.0
By: Osmar “Oz” Olivo
Product Manager
MongoDB Inc.
Agenda
• Pluggable Storage Engines
• WiredTiger Integration
• Concurrency
• Compression
• Enhanced Querying & Tools
• Administration Enhancements
• Replication Enhancements
Pluggable Storage Engines
• Vision
– One data model, one API, one set of operational
concerns
» Under the hood, many options for every use
case under the sun
Storage Engine Layer
Storage Engine Layer
Content
Repo
IoT Sensor
Backend
Ad Service
Customer
Analytics
Archive
MongoDB Query Language (MQL) + Native Drivers
MongoDB Document Data Model
MMAP V1 WT In-Memory ? ?
Supported in MongoDB 3.0 Future Possible Storage Engines
Management
Security
Experimental in
MongoDB 3.0
WiredTiger Integration
Why WT?
They’re Grrrreat!
Why WT?
• WT product and team acquired by MongoDB
– Authors former members of Berkeley DB team
– Standalone engine in use in production today
• WT addresses weaknesses of MMAPv1
– Compression
– Highly concurrent and enables full hardware utilization
– More tunable
Concurrency
MMAPv1 Concurrency Improvements
• Collection Level Concurrency
– One lock per collection
– Write operations to a collection block all other
operations on that collection
– Read operations to a collection block writes to that
collection
• Allow other read operations to occur concurrently
Concurrency in WiredTiger
• Document Level Concurrency
– Uses various algorithms to minimize contention
between threads
– One thread yields on contention to same document
• Writes no longer block all other writes
• CPU utilization directly correlates with performance
Compression
Compression (WT only)
• Compression is on in WT by default
• 3.0 supports two compression algorithms
– snappy (default)
• Good compression benefits with little
CPU/performance impact
– zlib
• Extremely good compression at a cost of additional
CPU/degraded performance
Enhanced Querying & Tools
Indexing & Querying
• Explain() 2.0
– explain() revamped
• Now allows for improved query inspection
• Geospatial Big Polygon support
– Improved handling of polygons with an area greater
than a single hemisphere
• $dateToString operator in aggregation
– Allows user to specify string format for which to
convert a date into
Tools Improvements
• MongoDB Server Tools Rewritten in GO
– Removed all server dependencies
– Allows for much faster iteration
• Parallelized data loading tools
– dump/restore & import/export
– highly improved loading and export times
Administration Enhancements
Administration
• Role Based Auditing
– Auditing rules can be set to filter on specific roles
– Useful for auditing certain kinds of accesses or users
• Logging Improvements
– New component system
– Able to filter by severity levels
Replication
Replication
• Replica set limit raised from 12 to 50
• Meets a much higher HA standard
– Can deploy across many more regions and DC’s
– Increases locality of data across deployments
– Easier to guarantee local reads across many regions
Questions?

Webinar: Introduction to MongoDB 3.0

  • 2.
    Introduction to 3.0 By:Osmar “Oz” Olivo Product Manager MongoDB Inc.
  • 3.
    Agenda • Pluggable StorageEngines • WiredTiger Integration • Concurrency • Compression • Enhanced Querying & Tools • Administration Enhancements • Replication Enhancements
  • 4.
  • 5.
    • Vision – Onedata model, one API, one set of operational concerns » Under the hood, many options for every use case under the sun Storage Engine Layer
  • 6.
    Storage Engine Layer Content Repo IoTSensor Backend Ad Service Customer Analytics Archive MongoDB Query Language (MQL) + Native Drivers MongoDB Document Data Model MMAP V1 WT In-Memory ? ? Supported in MongoDB 3.0 Future Possible Storage Engines Management Security Experimental in MongoDB 3.0
  • 7.
  • 8.
  • 9.
    Why WT? • WTproduct and team acquired by MongoDB – Authors former members of Berkeley DB team – Standalone engine in use in production today • WT addresses weaknesses of MMAPv1 – Compression – Highly concurrent and enables full hardware utilization – More tunable
  • 10.
  • 11.
    MMAPv1 Concurrency Improvements •Collection Level Concurrency – One lock per collection – Write operations to a collection block all other operations on that collection – Read operations to a collection block writes to that collection • Allow other read operations to occur concurrently
  • 12.
    Concurrency in WiredTiger •Document Level Concurrency – Uses various algorithms to minimize contention between threads – One thread yields on contention to same document • Writes no longer block all other writes • CPU utilization directly correlates with performance
  • 13.
  • 14.
    Compression (WT only) •Compression is on in WT by default • 3.0 supports two compression algorithms – snappy (default) • Good compression benefits with little CPU/performance impact – zlib • Extremely good compression at a cost of additional CPU/degraded performance
  • 15.
  • 16.
    Indexing & Querying •Explain() 2.0 – explain() revamped • Now allows for improved query inspection • Geospatial Big Polygon support – Improved handling of polygons with an area greater than a single hemisphere • $dateToString operator in aggregation – Allows user to specify string format for which to convert a date into
  • 17.
    Tools Improvements • MongoDBServer Tools Rewritten in GO – Removed all server dependencies – Allows for much faster iteration • Parallelized data loading tools – dump/restore & import/export – highly improved loading and export times
  • 18.
  • 19.
    Administration • Role BasedAuditing – Auditing rules can be set to filter on specific roles – Useful for auditing certain kinds of accesses or users • Logging Improvements – New component system – Able to filter by severity levels
  • 20.
  • 21.
    Replication • Replica setlimit raised from 12 to 50 • Meets a much higher HA standard – Can deploy across many more regions and DC’s – Increases locality of data across deployments – Easier to guarantee local reads across many regions
  • 23.

Editor's Notes

  • #7 Storage engine layer covers on disk data format, memory representation of the data, and how it is accessed (concurrency)
  • #10 Now have the option to scale both vertically as well as horizontally