Azure Cosmos DB: The industry’s first globally-distributed, multi-model database service

Опубликовано 10 мая, 2017

Distinguished Engineer and General Manager, Microsoft

Today, we’re excited to announce the general availability of Azure Cosmos DB. Azure Cosmos DB is the first globally-distributed data service that lets you to elastically scale throughput and storage across any number of geographical regions while guaranteeing low latency, high availability and consistency – backed by the most comprehensive SLAs in the industry. Azure Cosmos DB is built to power today’s IoT and mobile apps, and tomorrow’s AI-hungry future.

It is the first cloud database to natively support a multitude of data models and popular query APIs, is built on a novel database engine capable of ingesting sustained volumes of data and provides blazing-fast queries – all without having to deal with schema or index management. And it is the first cloud database to offer five well-defined consistency models so you can choose just the right one for your app.

To create these five consistency levels, and build many of the capabilities within Azure Cosmos DB, we married decades-worth of distributed systems and database research with world-class engineering rigor. You can learn more about the research we implemented in Azure Cosmos DB by watching this video from Turing Award-winning, Microsoft Researcher, distributed systems giant and our inspiration, Dr. Leslie Lamport.

Azure Cosmos DB - Transforming Cloud-based App Development

We believe that Azure Cosmos DB fundamentally transforms the way developers will build cloud-based apps:

1. Build globally distributed apps, more easily

Azure Cosmos DB makes global distribution, turnkey. With a single click, you can add/remove any number of Azure regions to your Azure Cosmos DB database, anytime. Azure Cosmos DB will seamlessly replicate your data wherever your users are.

2. Elastically scale throughput and storage, at any time, on demand, around the globe

Azure Cosmos DB allows your application to elastically scale throughput and storage on demand, worldwide. You can elastically scale up from 1000s to 100s of millions of requests/sec around the globe, with a single API call and pay only for the throughput (and storage) you need.  Azure Cosmos DB is the only cloud database which allows you to scale throughput at both second and minute granularities. This in turn helps you to predictably deal with any unexpected spikes in your workloads without having to over-provision for the peak.

“We are using Azure Cosmos DB for our transaction processing systems because it is capable of handling an extremely high volume of writes per second with predictable consistency, which gives our systems the high performance and reliability our customers demand. Our ability to scale throughput for each collection gives us the control we need to fine tune performance and cost to provide the highest value to our customers.”

- Andrew Hochstetler, Senior Director Application Architecture, Blackboard.

3. Build highly responsive apps

Azure Cosmos DB guarantees single-digit millisecond latencies at the 99th percentile to your app, anywhere in the world. The write-optimized, log structured and latch-free database engine, which is at the core of Azure Cosmos DB, enables sustained ingestions of data and blazing-fast queries. Users will love how responsive your app is!

4. Build always “on” apps

Azure Cosmos DB makes sure your app is always “on,” automatically. We guarantee high availability of your data in every region as well as, across all regions. Its multi-homing capabilities allow both your application and your data to remain highly available even in a case of regional disasters, without requiring complex redeployment of your app.

“The Xpander team within Microsoft develops one of the key services that powers a number of critical flows across Windows and Xbox, as such they have extremely high availability goals, strict latency requirements, distributed in key data centers across the world.  Since the migration from our previous storage solution to Azure Cosmos DB we have seen a drastic increase in overall reliability, significantly improved performance characteristics and a drastic reduction in something previously called “Micro-outage timeouts” that would affect 0.001% of transactions for <1 minute throughout any given day.”

- Cary Mitchell, Principal Software Engineering Lead, Xpander

5. Choose the consistency model that works best for your app

With Azure Cosmos DB, developers do not have to settle for extreme consistency choices (strong vs. eventual consistency). It offers 5 well-defined consistency choices - strong, bounded-staleness, session, consistent-prefix and eventual – so you can select the consistency model that is just right for your app.

“Johnson Controls is a global company, with a presence on all seven continents. Having a global database like Azure Cosmos DB available makes it dramatically easier to build applications to support our customers and equipment wherever they may be. Azure Cosmos DB gives us the low latency we need, and with fine-grained control over consistency we can make the right choices for our application for performance. Microsoft’s got some of the best folks in the world on their team, and we know that we can count on them to meet their very aggressive SLAs.”

- Erik Paulson, Data Engineer, JCI Connected Offerings

6. Iterate your app quickly without worrying of schemas or indexes

Keeping database schema and indexes in-sync with an application’s schema is especially painful for globally distributed apps. With Azure Cosmos DB, you no longer need to deal with schemas or indexes. The database engine is fully schema-agnostic.  Since no schema and index management is required you also don’t have to worry about application downtime while migrating schemas. We automatically index all the data – no schema, no indexes required – and serve blazing-fast queries.

“Citrix switched to Azure Cosmos DB to support the Citrix Identity Platform which enables single sign-on for more than 400,000 organizations and 100 million individuals globally. Azure Cosmos DB helped Citrix remove a primary issue faced by the development team, where a previous NoSQL database required indexing and constant code modifications. Azure Cosmos DB now automatically indexes all the properties of every record it ingests, by default.”

- Tom Kludy, Principal Architect, Citrix

7. Use the right data model for your app

The database engine of Azure Cosmos DB is designed to natively support nearly any data model. With today’s launch, we are enabling; key-value, document, and graph, but the engine is designed to be extensible and efficiently support newer types of data models. Stay tuned.

8. Use the APIs of your choice

Our goal is to help you to write globally distributed apps, more easily, using the tools and APIs you are already familiar with.  Azure Cosmos DB’s database engine natively supports DocumentDB’s SQL dialect, MongoDB API, Gremlin (graph) API, and Azure Table Storage APIs. In the future, we will support other popular data access APIs natively, giving you even more choice and flexibility.

9. Industry-leading, comprehensive SLAs

Azure Cosmos DB is the first and only globally distributed database service in the industry to offer financially-backed comprehensive SLAs. They cover: high-availability, low latency at the 99th percentile, consistency and throughput.

“When ASOS evaluated the market for our future NoSQL platform, we looked at multiple options, however we selected Azure Cosmos DB because we were impressed with it on many levels. Firstly, it’s a managed database-as-a-service which was extremely appealing – we don’t think as a retailer there’s value in running databases, the value is in the propositions you build using them! Obviously this only plays out if the availability and the SLA’s around that service are enterprise grade. Secondly, our customers were global so the ability to simply replicate the data globally for performance as well as for resiliency was key. Finally, ASOS is running a micro-service architecture and naturally each service has different workload and performance characteristics, so the ability to vary the consistency levels without having to move to a different technology gives us a lot of benefits. Azure Cosmos DB is already an important part of the ASOS architecture, and looks increasingly to be core to our proposition.”

- Dave Green, Enterprise Application Architect, ASOS

A Brief History of Cosmos

Azure Cosmos DB started as “Project Florence” in 2010 to address developer the pain-points faced by large scale applications inside Microsoft. Observing that the challenges of building globally distributed apps are not a problem unique to Microsoft, in 2015 we made the first generation of this technology available to Azure developers in the form of Azure DocumentDB. Since that time, we’ve added new features and introduced significant new capabilities.  Azure Cosmos DB is the result.  It is the next big leap in globally distributed, at scale, cloud databases. As a part of this release of Azure Cosmos DB, DocumentDB customers, with their data, are automatically Azure Cosmos DB customers. The transition is seamless and they now have access to the new breakthrough system and capabilities offered by Azure Cosmos DB.

For a technical overview, please check out the first of a series of blog posts you can expect from me and my team here. This post also includes a longer version of the interview with Dr. Leslie Lamport titled Foundations of Azure Cosmos DB.

With Azure Cosmos DB, our mission was to enable the world’s developers to build amazingly powerful, cosmos-scale apps, more easily. Today marks the Big Bang moment for us in the Azure Cosmos DB team and we’re excited to share it with all of you—our developers and customers around the world.
Please try out #AzureCosmosDB and let us know what you think!  We are excited to see what you build.

— Your friends at Azure Cosmos DB (@AzureCosmosDB)