At Build 2017 today in Seattle Microsoft took the wraps off Azure Cosmos DB, a “globally distributed multi-model database service”. Cosmos DB is designed to be as accessible as it is available, and is a significant upgrade to Document DB, a managed NoSQL database service optimised for JSON storage.
What is particularly striking about Cosmos DB is that it’s unashamedly designed to take full advantage of Microsoft’s hyperscale data center infrastructure – running across 27 regions. This is not a database for on prem deployment.
Like Google Cloud Platform’s recent Spanner announcement, which I covered here, it takes Brewer’s CAP Theorem – that a distributed data store can only offer guarantees in two dimensions across consistency, availability or partition tolerance – as a theoretical rather than practical limit on database design.
Cosmos DB instead offers these tradeoffs as declarative options for a developer. Replication policies are declarations rather than design decisions, with Microsoft offering service level guarantees for uptime, performance, latency and consistency etc.
While aimed at different application types – Spanner offers ACID-style consistency for relational style transactions apps – there are similarities in being web scale architectures with cross region policy control. Cosmos DB makes region policy really easy to set up.
In terms of developer accessibility Microsoft announced support for graph traversal, supporting Apache Gremlin.The Build graph demo was cool, but almost presented as an afterthought – Microsoft took a natural language query and created the Graph database query on the fly, using the Marvel superhero universe as a dataset.
Mongo API support is the big plus for Microsoft in developer accessibility terms – CosmosDB, like DocumentDB acts as managed Mongo database as a service, competing with MongoDB’s own Atlas service.
Cosmos takes the comedy about Mongo being “Web scale” and turns it on its head. It really is Web scale. Once the data is in Cosmos DB, Microsoft offers options such as Spark and Hadoop (HDInsights) for streaming and analytics. Hadoop ecosystem components belong in the cloud.
Microsoft already has customers running DocumentDB at massive scale – including JET.com, and refactored the design based on these experiences. Honeywell, Schneider Electric and Johnson Controls are all adopters, which is a solid industrial automation base right out of the gate.
Microsoft also announced managed database support for Postgres and MySQL today but there is no doubt the most interesting data store news was Cosmos DB, a differentiated offering designed explicitly for the Azure cloud.
Microsoft is a client, paid T&E to Build. Google and MongoDB are also clients.