Azure Cosmos DB has been around for a while now, but many of you probably don't know what all of the buzz is about. Azure Cosmos is to databases what .NET was to programming languages. Now, I know that many of you may not have been working in the field when it happened, but it was revolutionary.
In 2000, before .NET was publicly available, it was only possible to write an application in one language per compiler. .NET introduced the idea of supporting multiple programming languages by using an architecture that included an intermediary language. Regardless of which .NET supported language a developer used, it would compile against that intermediary language enabling employers to hire either C# or VB.NET programmers to work side by side.
Azure Cosmos DB offers data scientists a similar capability through Azure Cosmos' multi-model capability and multi-API capability. The data engine uses what is called atom-record-sequence (ARS) to store data. You may recall that ATOM is the acronym that describes atomic transactions in database theory. By providing multiple API's from popular databases like DocumentDBSQL, MongoDB, Azure Table Storage, Gremlin, and Cassandra, Microsoft made it possible for us to easily migrate these databases to the Azure Cosmos DB. Furthermore, the schema-agnostic container gives us the ability to combine data from various sources for use in machine learning algorithms. Data scientists can choose the most appropriate API to support the kind of data being stored.
But wait, there's more...
While having a multi-model and multi-api database is enough features for most data scientists, developers will love the global distribution feature. Using Azure Cosmos DB, developers can create mobile applications and have those applications retrieve data that is close to the app. For example, before Azure Cosmos, developers might write an app in the US, but when customers in the UK used the app they would get performance issues because the data needed to travel across the ocean to the US data center. With Azure Cosmos DB, the data is distributed globally across Microsoft's Azure data centers, so users are never very far away from the data.
For the technical geeks, there are some goodies for you...
Under the hood, Azure Cosmos packs five different consistency models. Most database architectures only support strong consistency and eventual consistency while Azure Cosmos supports the bounded staleness, session, and consistent prefix models.
Strong - reads are guaranteed to return the latest version of the data
Bounded Staleness - reads lag behind writes
Session - monotonic reads, monotonic writes, reads-follow-writes, and write-follows-reads
Consistent Prefix - Updates returned are some prefix of all the updates with no gaps
Eventual - out of order reads
99.999% - Five Nines
Just when you thought that there couldn't be more to love, Azure Cosmos DB provides an SLA of five nines. As of the time of this writing, it is the only Microsoft product to support a five nines SLA, meaning that the system will be down more than 52 minutes for an entire year!
Jenna Bourgeois, MCAD, MCSD, MCSE, MCTS, MCITP, MCT, CEO of Dynamics Intelligence (US/Canada) has 30 years of experience writing software predominantly on the Microsoft stack.