At Build 2017 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 of its predecessor 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.
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 offering these tradeoffs around as declarative options for a developer.
Replication policies are declarations rather than design decisions for the developer, with Microsoft offering service level guarantees around uptime, performance, latency and consistency accordingly.
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.That part of the Build demo was striking, but almost presented as an afterthought – Microsoft took a natural language query and created the Graph database query on the fly. Mongo API support is another big plus in accessibility terms – CosmosDB, like DocumentDB acts as a managed Mongo database. But Mongo takes some of the old jokes about Mongo being “web scale” and turns them on their head.
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 is also a client.
(Read this and other great posts @ RedMonk)