12 comments

[ 3.0 ms ] story [ 35.5 ms ] thread
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...
Nice to see WiredTiger getting some love. LevelDB gets all the credit these days (and LMDB to a [much] lesser extent).
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?
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.
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.

Great news! I also like the new 50 replica limit.

I gave up on MongoDB after 2.6 but it sounds like they're finally maturing to a true production ready datastore.

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.

mangoDB (https://github.com/dcramer/MangoDB) has significantly faster writes than MongoDB.

On a serious note, Postgres 9.3 with the JSON data type is quite comparable to MongoDB these days.

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.
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.