Jenna deBoisblanc Welcome to MongoDB Toronto and a keynote about what is happening with 10gen, the company behind MongoDB and what is to come.
An evening in Torontowith MongoDB 2.2Jenna deBoisblancSupport Engineer, 10gen[email protected]@jdeboisblanc
View Slide
MongoDB Releases2.2Aug ‘122.0Sept ‘111.8March ‘112.2-rc0: July 19th2.2-rc1: targeted July 31st2.2 – out shortly after
Concurrency)improvementsAggregation)frameworkTag)aware)shardingRead)PreferencesTTL)CollectionsShell)enhancementsMore…•••••••New features in 2.2
DB#Level#LockingGlobal#lock#for#journaling,#fsync#etc.#onlyEasy#transition#to#collection;level#locksReplication#can#happen#in#parallel#to#write#(client#db#vs.local)Yielding#on#page#faultsStarted#with#2.0Yielding#for#updates•–––•––Concurrency Improvements
Concurrency Statsdb.serverStatus(-)-shows-db-level-lockspage-fault-details•––> db.serverStatus().recordStats{"accessesNotInMemory" : 1,"pageFaultExceptionsThrown" : 1,"local" : {"accessesNotInMemory" : 0,"pageFaultExceptionsThrown" : 0},"test" : { .... }“foo” : { ... }}
Replaces(common(uses(of(map/reduceImplemented(in(C++Query(optimizer(can(use(indexesChained(operators$project(–(specified(fields,(compute(values(etc.$unwind(–(stream(arrays$group(–(aggregate(on(key$match$sort••••–––––Aggregation framework
{"_id:"1,"tags:"[“Jenna”,"“pizza”]"}{"_id:"2,"tags:"[“Jenna”,"“sushi”,"“pizza”]"}>db.collection.aggregate("""""{$unwind:"“$tags”},"""""{$group:"{_id:"“$tags”,"total:"{$sum:1}"}"}")"result"":"[""""""""""""""""{"_id"":""sushi",""total"":"1},""""""""""""""""{"_id"":""pizza",""total"":"2},""""""""""""""""{"_id"":""Jenna",""total"":"2}""""""""]Aggregation Framework – example
Use$casesforce$writes$to$local$data$centerdistribute$data$based$on$usage•––Tag aware sharding
ModesDrivers*set*on*a*per/connection,*per/collection,*orper/operation*basisPrimary*(default)*Primary_PreferredSecondarySecondary_PreferredNearestReplica*set*tagsRead*support*for*replica*set*tags•–••••••–Read Preferences
“Time%To%Live”Use%field%in%document%to%specify%expiryConstraintsIndexed%field%must%be%a%BSON%date%typeCannot%be%used%on%capped%collection•••––TTL Collections{_id:%1,%name:%“Jenna”,%status:%BSONDate}>%db.log.ensureIndex({“status”:%1},%{expireAfterSeconds:%3600})
Verbose'mode>'set$verbose$true>'db.foo.update('{'},'{$set:'{field:'10}'}')Updated'2'existing'record(s)'in'2msEnhanced'editing'featuresmultiDline'support••–Shell enhancements
Replicationrs.syncFrom(2“[hostname]2:2[port]”2)2specify2who2to2sync2fromToolsmongooplog2–2tool2for2replaying2oplogAuthentication2support2and2concurrency2statistics2inmongotop2and2mongostat•–•––More…
Even More!Query&optimizerMany&improvements¬&directly&visible&to&userBetter&support&for&$in&+&sort&+&limitMap/reduceChoose&initial&split&points&for&sharded&output•––•–
What’s next?
Operational+enhancementsExternal+authentication+integrationFragmentation+reductionNew+featuresFull9text+searchPerformance+improvementsMore+granular+locksImproved+aggregation+frameworkIndex+improvements•––•–•–––Post 2.2
We’re Hiring ![email protected]mongoDB.org