Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDB Roadmap

MongoDB Roadmap

Presented at MongoDB Bangalore 2012

Sridhar Nanjundeswaran

October 26, 2012
Tweet

More Decks by Sridhar Nanjundeswaran

Other Decks in Technology

Transcript

  1. Recent Release History 2.2 Aug ‘12 2.4 winter ‘12 2.0

    Sept ‘11 1.8 March ‘11 Journaling Sharding and Replica set enhancements Spherical geo search Index enhancements to improve size and performance Authentication with sharded clusters Replica Set Enhancements Concurrency improvements Aggregation Framework Multi-Data Center Deployments Improved Performance and Concurrency
  2. 2.2 Release August 2012 • Concurrency: yielding + db level

    locking • New aggregation framework • TTL Collections • Improved free list implementation • Tag aware sharding • Read Preferences • http://docs.mongodb.org/manual/release-notes/2.2/
  3. Yielding and DB Locking • Improved yielding on page fault

    • Breaking down the global level lock – Lock per Database in 2.2 – Lock per Collection post 2.2
  4. Aggregation Framework • Pipeline model (a bit like unix pipes)

    – Like a "group by" – Operators • $project, $group, $match, $limit, $skip, $unwind, $sort – Expressions • Logical Expressions: $and, $not, $or, $cmp ... • Math Expressions: $add, $divide, $mod ... • String Expressions: $strcasecmp, $substr, $toLower ... • Date/Time Expressions: $dayOfMonth, $hour... • Multi-Expressions: $ifNull, $cond • Use Cases: Real-time / inline analytics
  5. { title : "my tech blog" , author : "bob"

    , tags : [ "fun" , "good" , "tech" ] , } { title : "cool tech" , author : "jim" , tags : [ "awesome" , "tech" ] , } Example – For each "tag", list the authors
  6. db.blogs.aggregate( { $project : { author : 1, tags :

    1, } }, { $unwind : "$tags" }, { $group : { _id : { tags : "$tags" }, authors : { $addToSet : "$author" } } } ); Aggregate Command
  7. { "result" : [ { "_id" : { "tags" :

    "tech" }, "authors" : [ "jim", "bob" ] }, Results
  8. Time to Live (TTL) • Auto expire data out of

    a collection • Must be on a date datatype • Single value is evaluated • Use Cases: data retention, cache expiration db.events.ensureIndex( { "timestamp": 1 }, { expireAfterSeconds: 3600 } )
  9. Tag Aware Sharding • Distribute data based on a Tag

    • Use Cases: Locality for Data by Data Center sh.addShardTag("shard0000", "dc-emea") sh.addTagRange("mydb.users", { country: "uk"}, { country: "ul"}, "dc-emea" ); sh.addTagRange("mydb.users", { country: "by"},{ country: "bz"}, "dc-emea" );
  10. Read Preferences • Mode – PRIMARY, PRIMARY_PREFERRED – SECONDARY, SECONDARY_PREFERRED

    – NEAREST • Tag Sets – Uses Replica Set tags – Passed Tag is used to find matching members
  11. 2.4 Highlights • Security – SASL, Kerberos, Additions to privileges

    and auditing • Hash-based Sharding • Geospatial Indexing: query intersecting polygons • Aggregation framework: faster and more features • V8, background secondary indexing, replica set flapping • Distribute non-sharded collections throughout cluster • MMS running in your own data center (separate)
  12. Ongoing Work • Collection / Extent level locking • Field

    level authorization • Auditing • Full-text query
  13. What can I do? • MongoDB is a community driven

    product – Use the product – Log feature requests – Vote for existing features • Join your local meetup – http://www.meetup.com/MongoDB-Bangalore-User- Group/