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

MongoDB 2.2: Release update + Roadmap | Alvin Richards

MongoDB 2.2: Release update + Roadmap | Alvin Richards

Alvin Richards (10gen)
Meetup #6

Minsk MongoDB User Group

September 18, 2012
Tweet

More Decks by Minsk MongoDB User Group

Other Decks in Programming

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. • 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/ 2.2 Release August 2012
  3. Yielding + 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. Aggregate Command db.blogs.aggregate( { $project : { author : 1,

    tags : 1, } }, { $unwind : "$tags" }, { $group : { _id : { tags : "$tags" }, authors : { $addToSet : "$author" } } } );
  6. Time To Live (TTL) Collections • 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 } )
  7. 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" );
  8. Read Preferences • Mode • PRIMARY, PRIMARY_PREFERRED • SECONDARY, SECONDARY_PREFERRED

    • NEAREST • Tag Sets • Uses Replica Set tags • Passed Tag is used to find matching members