Keep in mind that document-level locking will be available only for WiredTiger storage engine and not default one (MMAPv1). MMAPv1 will support only collection level locking.
The same story goes for compression. Also only available in WiredTiger. Question remains - how stable will WiredTiger be in 2.8...
I haven't checked WiredTiger storage driver nor it's source but I think it's safe to say that the in-place updates are not possible with Wired Tiger (even without compression) and most future storages.
People must be careful not to heavily update big documents with these.
I would say that document-level locking is a big deal for MongoDB. When I was working at a company running MongoDB, we were running into latency issues when multiple larger documents would be updated or created. Coupled with the fact that we were using AWS and provisioning even 1000 IOPS was expensive and limited compared to IOPS available to SSDs. On top of all of that we weren't using the fire-and-forget default for writing data. We were requesting write receipts.
Document-level locking will likely result in much better performance for MongoDB.
What is WiredTiger? I checked the github, but couldn't find any high level information other than it uses a LSM much like LevelDB. What advantages/tradeoffs have they made in WiredTiger vs. LevelDB?
I hadn't heard of wiredtiger either. Looks interesting. Anyone know how it compares to LMDB[1]? Both in terms of features and maturity? Apparently made by the people that gave the world the Sleepycat Berkley DB.
It's an embedded ordered key value store, like LevelDB. It's actually configurable to either LSM or BTree. Everything I read says it's much faster than LevelDB, but I never tested it myself.
MongoDB seems to be going through the same phases that MySQL did about 10 years ago with the 3.x series. It's interesting to see the progression and I look forward to these improvements but there seems to be so many other choices out there, although at the small level, not nearly as easy to use.
The most appealing feature of many NoSQL databases, for me, is their ability to automatically shard and replicate data across multiple instances. It is possible to do this with relational databases such as Postgresql, but it is not easy from my experience. Also failover and balancing sharded data are not things that are easy with relational databases.