Cosmos DB review: Database for a small planet


If you do business around the world, you may need a scalable, distributed, global database. You have several choices including , the open source , the graph database , and the subject of this review, .

Azure Cosmos DB is a globally distributed, horizontally partitioned, multi-model database service. It offers four data models (key-value, column family, document, and graph) and five tunable consistency levels (strong, bounded staleness, session, consistent prefix, and eventual consistency). It offers five API sets: SQL (dialect), MongoDB-compatible, Azure Table-compatible, graph (Gremlin), and Apache Cassandra-compatible. Cosmos DB automatically indexes all data without requiring you to deal with schema and index management.

The design goals of Cosmos DB include elastic global scalability, low-cost operation, low read and write latencies, 99.99 percent availability, predictable and tunable data consistency, stringent financially-backed comprehensive SLAs, automatic schema/index management and versioning, native support for multiple data models, and popular APIs for accessing data. Yes, that’s a mouthful, as well as just a little ambitious, but it all works.

Cosmos DB is both similar to and different from each of , , and . Google Cloud Spanner and CockroachDB offer SQL, strong consistency, cluster consensus, automatic horizontal partitioning, and the use of clock synchronization across nodes; Azure Cosmos DB does all of that, and it offers weaker consistency models that provide better performance and lower latency.