Azure Cosmos DB Is Out of This World
Microsoft dubs it the "first globally distributed, multi-model database service delivering turnkey global distribution with guaranteed uptime and millisecond latency at the 99th percentile." Also announced: Azure DB for MySQL and PostGreSQL previews.
Among the database offerings announced at Microsoft's Build conference in early May was Azure Cosmos DB, a database cloud service that was some seven years in the making. The game-changing data solution was based on "foundational work" conducted by Microsoft Researcher Leslie Lamport, a winner of the prestigious Turing Award.
"Today, we announced Azure Cosmos DB, the first globally distributed, multi-model database service delivering turnkey global distribution with guaranteed uptime and millisecond latency at the 99th percentile," Microsoft exec Scott Guthrie said in a blog post. "While most database services force you to choose between strong or eventual consistency, Azure Cosmos DB is the only globally distributed database service which offers five well-defined, intuitive consistency choices -- so you can select just the right one for your app."
In a technical overview of Azure Cosmos DB, Microsoft listed eight design goals:
- Enable customers to elastically scale throughput and storage based on demand, globally. The system should deliver the configured throughput within 5 seconds at the 99th percentile, from the time of the request to scale.
- Enable customers to build highly responsive, mission-critical applications. The system must deliver predictable and guaranteed end-to-end low read and write latencies at the 99th percentile.
- Ensure that the system is "always on". The system must provide 99.99 percent availability regardless of the number of regions associated with their database. To enable customers to test the end-to-end availability properties of the applications, (in steady state) the service must also allow customers to simulate regional failures or mark regions associated with their database offline. This helps validate the end-to-end availability properties of applications.
- Enable developers to write correct globally distributed applications. The system must offer an intuitive and predictable programming model around data consistency. While strong consistency comes with a price, writing large globally distributed applications against an "eventually consistent" database results in an application code which is hard to reason about, is brittle, and rife with correctness bugs.
- Offer stringent financially-backed comprehensive SLAs [service-level agreements] for 1, 2, 3 and 4 above.
- Relieve the developers from the burden of database schema/index management and versioning. Keeping database schema and indexes in-sync with an application's schema is especially painful for globally distributed applications.
- Natively support multiple data models and popular APIs for accessing data. The translation between the externally exposed APIs and internal data representation needed to be efficient.
- Operate at a very low cost to pass on the savings to customers.
Guthrie indicated Azure Cosmos DB met those design goals.
"Azure Cosmos DB allows you to elastically scale across any number of geographical regions while delivering the industry's only financially-backed database SLA across availability, latency, throughput, and consistency," he said. "As the first and only schema-agnostic database, Azure Cosmos DB automatically indexes data so you can perform blazing fast queries without having to deal with complexities of schema and index management or schema migration in a globally distributed setup.
"Customers including Jet.com are using Azure Cosmos DB to scale to 100 trillion transactions per day and growing, spanning multiple regions. Tapping into Azure Cosmos DB gives them planet scale, so they can keep focused on growing their business."
Also announced: previews of Azure Database for MySQL and Azure Database for PostgreSQL, which run as native platform-as-a-service offering.
"MySQL and PostgreSQL databases are popular choices amongst open source developers to build and deploy applications be it -- Web, mobile, content management system (CMS), customer relationship management (CRM), business, or analytical applications," Microsoft data exec Rohan Kumar said in a blog post. "These developers can now choose their favorite database engines delivered as a managed service on Azure that seamlessly integrate with most common open source programming languages such as PHP, Python, Node.js, and application development frameworks such as Wordpress, Magento, Drupal, Django, Ruby on Rails.
"Therefore, whether you want to build a Web site using MySQL database or want to quickly build and deploy a geospatial Web or mobile app with PostgreSQL, you can now quickly get setup using the managed service capabilities offered by Azure. In addition, app developers can continue to use the familiar community tools to manage their MySQL or PostgreSQL databases."
Microsoft also announced a limited preview of the Azure Database Migration Service. It lets developers migrate existing on-premises SQL Server, Oracle and MySQL databases to the Azure cloud, where destination target databases include Azure SQL Database, Azure SQL Database Managed Instance or Microsoft SQL Server in an Azure virtual machine.
David Ramel is the editor of Visual Studio Magazine.