Azure Cosmos DB is a globally distributed, multi-model NoSQL database. Its unique capabilities are genuine; so is the operational complexity and cost that come with them.
The global distribution model
Cosmos DB replicates data across any number of Azure regions transparently. Adding a read region is a portal toggle, no application changes required. The consistency model (five levels from strong to eventual) determines how the application experiences the replication: strong consistency ensures reads always return the latest write but adds latency; eventual consistency gives you the lowest latency but may read stale data. Session consistency (the default) gives you consistent reads within a single client session at low cost.
Request units and cost modelling
Cosmos DB charges in Request Units (RUs), a measure of compute, memory, and I/O consumed per operation. A single point-read of a 1KB item costs 1 RU; a complex cross-partition query can cost hundreds of RUs. Understanding and optimising RU consumption is essential for cost management. Design patterns that minimise RU consumption: prefer point reads over queries, denormalise to avoid cross-partition joins, and choose partition keys that distribute reads evenly.
The partition key decision
The partition key determines how data is distributed across logical partitions (and physical partitions within Cosmos). A poor partition key choice, one that creates hot partitions (all writes to one key) or sparse partitions, limits throughput and increases cost. The partition key should be: high-cardinality (many distinct values), evenly distributed in access frequency, and aligned with the dominant access pattern (usually the entity's owning ID).
When Cosmos DB is the right choice
Cosmos DB earns its complexity when: multi-region active-active writes are required (few databases support this), latency requirements are sub-10ms globally, or the multi-model support (document, key-value, graph, columnar) gives you genuine flexibility. For workloads that do not require these specific capabilities, Azure SQL, Azure Database for PostgreSQL, or even Redis serve most requirements at lower cost and operational complexity.