Breaking

Saturday, June 30, 2018

MongoDB 4.0 aims for cloud-friendliness

While it has become fashionable for operational databases to become multi-model, MongoDB has stuck to its knitting with the document model. But in the 4.0 release, it addresses some checkboxes on widely different sides of the database spectrum.


You can't knock MongoDB for staying close to its roots. Playing a similar role in the NoSQL world as the original MySQL did with the LAMP stack, MongoDB has remained known as the operational database that is developer-friendly. As rivals are embracing multi-model approaches, MongoDB continues to believe that the best way to represent the diversity of models like key-value, graph, or text is within the document model itself. But with the 3.0 generation, MongoDB took a more enterprise-grade path starting with a higher-performance, extensible (or pluggable) storage engine that addressed its weakness with writes.

At MongoDB World this week, the company is announcing general availability of the new 4.0 release, plus several beta features relating to the cloud. With the 4.0 release this week, MongoDB has aimed to address two different constituencies: those demanding transaction support and ease of development in the cloud.

MongoDB first sprang some of the news last winter by disclosing in advance that 4.0 would take ACID. To recap, ACID support now extends across multiple documents, meaning it could be enforced across one (or more) collections. But initially, that support will be restricted to a single replica with distributed supported across sharded clusters to go live with the 4.2 dot release later in the year.

But out of the box, the 4.0 release adds a related feature for ACID consistency for making reads easier off secondary replicas with a new non-blocking secondary read capability. This addresses a weakness in availability with MongoDB's primary/secondary (a.k.a., master/slave) design. MongoDB's replica design has been intended to enforce strong consistency by default with fast failover. But that meant slower performance when reading from replicas that are being updated by the master; with the new option, non-blocking will speed reads from those replicas if you choose a more relaxed consistency model. While this does not offer the range of consistency options for cloud-native platforms like Azure Cosmos DB, it provides a step towards providing better choices.

The new release also adds another enterprise database-oriented feature of supporting basic transformations inside the database. So, if you ingest a set of data that has dates in character strings, you can convert inside MongoDB with a new $convert function that works inside the database, as opposed to requiring an external tool or manual coding. With the new feature, data transformations can be performed as part of the aggregation pipeline by simply invoking a function. And while we're on the topic of aggregation pipelines, you can now build them through drag and drop in Compass, MongoDB's GUI tool.

It also includes general availability public beta for MongoDB Charts, a new in-database visualization feature first disclosed last year that was not necessarily meant to replace Tableau. The Charts feature eliminates the need for using MongoDB's BI Connector to feed a separate SQL-based visualization tool. But the real differentiator is that it can visualize JSON documents without having to "flatten" their structure (and lose the richness of nested data) that would otherwise occur with the original SQL option.

Other features in 4.0 address cloud and mobile deployment. A year ago, MongoDB released Stitch as beta, a developer-oriented serverless compute environment available on its Atlas cloud managed service. MongoDB Stitch is now generally available. It departs from serverless offerings like AWS Lambda in that it supports stateful applications. Evidently Stitch has proven popular with over 23,000 apps written on it to date, and currently at a pace of 500 per day.

The 4.0 release includes previews of several mobile features. The first is a mobile embedded version of MongoDB that will run on smartphones, tablets, and IoT devices that will be a private beta in the 4.0 release. The other is Mobile Sync, a service that will appear in MongoDB's Stitch. We're employing future tense here, because while Stich just emerged from beta in 4.0, Mobile Sync is, in Mongo's words, "coming soon." Together, both features open the possibility of running small footprint MongoDB edge servers for wide area IoT use cases. Here, MongoDB is treading down a path already opened by rivals such as Couchbase, which has offered a mobile client platform for several years.

Last but not least is a new multi-region capability for MongoDB's Atlas managed cloud service that will let you deploy an instance that is distributed across multiple world regions. This is where the non-blocking secondary read feature mentioned above will prove critical as it will provide an option for improving global read performance. Because MongoDB lacks the multi-master capability of cloud-native data stores like Cosmos DB, DynamoDB, or Google Cloud Spanner, such a capability is vital for making this feature worthwhile. It addresses the fact that, while it can sometimes prove challenging to keep up with the Joneses, there is a significant constituency for operational databases who want to keep their cloud options open.




1 comment: