Skip to content
Home › SQL Comparisons › DynamoDB vs Cosmos DB
Comparison · NoSQL & Distributed Databases

DynamoDB vs Cosmos DB

Amazon DynamoDB and Azure Cosmos DB are the first-party managed NoSQL databases of AWS and Microsoft Azure. Both partition data by a key you choose, bill by request units or provisioned throughput, replicate across regions and now include vector search. They differ in item size (400 KB versus 2 MB), consistency choices (two read modes versus five levels), transaction scope, multi-region write models and the APIs offered. In practice your cloud usually decides, and the details below decide whether the design fits.

Last verified November 2026. Licensing and features change; check the official sources for the latest details.

Quick verdict

Short answer

Choose DynamoDB if you build on AWS, your access patterns are key-based and known in advance, and you want transactions that can span items and tables (up to 100 actions) and global tables with an option for strong consistency across three Regions. Choose Azure Cosmos DB if you build on Azure, want five consistency levels, multi-region writes in any number of Azure regions, larger items (2 MB), a SQL-like query language over JSON, or compatibility APIs for MongoDB, Cassandra, Gremlin or Table. Neither runs on the other's cloud, so treat this as a choice about the platform as much as the database.

How we know: This comparison is research-based: capacity modes, pricing units and list prices, limits, consistency, transactions, multi-region behaviour and vector search were checked on 7 November 2026 against the AWS DynamoDB pricing pages and Developer Guide, and against Microsoft Learn and Microsoft's Azure Retail Prices API for Cosmos DB, and kept consistent with our Azure Cosmos DB guide and DynamoDB profile. We have not run workloads on either service; example costs are arithmetic on list prices.

Amazon DynamoDB is AWS's serverless key-value and document database. You create tables, not servers: each item is addressed by a partition key and optional sort key, and is read with GetItem, Query and Scan or a subset of PartiQL. Tables use on-demand (pay per request) or provisioned capacity, global tables replicate across Regions, and since 5 August 2026 vector indexes and the SearchVectors API add similarity search on on-demand tables. See our Amazon DynamoDB profile.

Azure Cosmos DB is Microsoft's fully managed NoSQL and vector database. Each account uses one API: the native API for NoSQL (JSON documents queried with a SQL-like language) or compatibility APIs for MongoDB, Apache Cassandra, Apache Gremlin and Table. Items are partitioned by a partition key, every operation is costed in request units (RUs), and you can add Azure regions to an account at any time. See our Azure Cosmos DB guide for APIs, capacity modes and worked price examples.

Side by side

AspectAmazon DynamoDBAzure Cosmos DB
Cloud AWS only (DynamoDB local for development) Azure only (emulator for development)
APIs and query DynamoDB API (GetItem, Query, Scan) and a PartiQL subset API for NoSQL with a SQL-like query language; MongoDB, Cassandra, Gremlin and Table APIs (one per account)
Maximum item size 400 KB 2 MB (16 MB documents in the API for MongoDB when enabled)
Partition limits Partitions managed automatically; no per-key storage cap to plan for outside LSI item collections (10 GB) 20 GB per logical partition and 10,000 RU/s per partition; hierarchical partition keys to go further
Capacity modes On-demand (per request) or provisioned (per WCU and RCU hour), switchable Standard provisioned RU/s, autoscale RU/s, or serverless (per million RUs, single region)
Read consistency Eventually consistent by default; strongly consistent reads on request (not on GSIs) Five levels: strong, bounded staleness, session, consistent prefix, eventual; default per account, relaxable per request
Transactions ACID across items and tables in one Region, up to 100 actions ACID with snapshot isolation within one logical partition key: transactional batch (100 operations, 2 MB, 5 s) or stored procedures
Multi-region writes Global tables: MREC (last writer wins, any number of Regions) or MRSC (strong, exactly 3 Regions) Multi-region writes in any number of regions, with last-writer-wins or custom conflict resolution; strong consistency not available with multiple write regions
Vector search Vector indexes with SearchVectors (GA 5 August 2026); on-demand tables only Integrated vector search in the API for NoSQL: flat, quantizedFlat and DiskANN indexes, up to 4,096 dimensions
Free allowance 25 GB storage, 25 WCU and 25 RCU (provisioned) per Region each month, no time limit Lifetime free tier: 1,000 RU/s and 25 GB for one account per subscription (not serverless)
Availability SLA (vendor stated) 99.99% single-Region; 99.999% global tables Up to 99.999% for multi-region accounts; tiers vary by configuration

Key differences

Data model, APIs and querying

DynamoDB has one data model and API. You design keys and secondary indexes around known questions, often with several entity types sharing one table, and anything that does not match a key or index becomes a Scan. PartiQL gives SQL-like syntax for single-table statements but no joins.

Cosmos DB asks you to choose an API per account. The native API for NoSQL indexes every property by default and supports a SQL-like language with filters, projections, aggregates and JOIN within an item (up to 10 per query by default). The MongoDB, Cassandra, Gremlin and Table APIs let existing drivers connect, with documented feature gaps; see MongoDB Atlas vs Azure Cosmos DB for the MongoDB case.

-- DynamoDB PartiQL: one customer's orders by key
SELECT * FROM "AppTable"
WHERE PK = 'CUSTOMER#123' AND begins_with(SK, 'ORDER#');

-- Cosmos DB API for NoSQL: the same within one partition
SELECT c.id, c.total, c.orderDate FROM c
WHERE c.customerId = "123" AND c.type = "order"
ORDER BY c.orderDate DESC

Capacity and pricing units

DynamoDB counts work in request units sized by data: a write request unit covers up to 1 KB, a strongly consistent read unit up to 4 KB, an eventually consistent read costs half and a transactional read or write costs double. On-demand bills per million units; provisioned bills per capacity unit per hour, with auto scaling and reserved capacity.

Cosmos DB normalises every operation into RUs: Microsoft's reference is that a point read of a 1 KB item by ID and partition key costs 1 RU, while writes, queries, larger items, more indexed properties and stronger consistency cost more (strong and bounded staleness reads cost about twice as much). You provision RU/s in steps of 100 (manual, minimum 400 RU/s per container), set an autoscale maximum (scaling between 10% and 100% and billed at the hourly peak), or use serverless, which is limited to one region. In both services, item size and access pattern drive cost more than data volume, so estimate with your own operations.

Consistency and transactions

DynamoDB offers two read modes: eventually consistent (default) and strongly consistent, which is not available on global secondary indexes. TransactWriteItems and TransactGetItems group up to 100 actions on distinct items, across tables, within one account and Region.

Cosmos DB offers five consistency levels, with session the most widely used according to Microsoft. Its ACID transactions use snapshot isolation but are scoped to one logical partition key in a container: a transactional batch holds up to 100 point operations, up to 2 MB, and must finish within 5 seconds; stored procedures written in JavaScript give the same scope. If you need atomic updates across unrelated entities, DynamoDB's cross-table transactions are the more flexible model; in Cosmos DB you design the partition key so that related items share it.

Multi-region replication

DynamoDB global tables replicate a table across Regions with every replica accepting writes. The default, multi-Region eventual consistency (MREC), resolves conflicts with last writer wins. Multi-Region strong consistency (MRSC) replicates synchronously across exactly three Regions (three replicas, or two plus a witness), in a listed set of Regions, and does not support transactions, TTL or local secondary indexes; the mode is fixed at creation.

Cosmos DB lets you add or remove any Azure region on an account and enable multiple write regions. Conflicts are resolved by last writer wins on the system timestamp (or, in the API for NoSQL, a custom numeric property) or by a custom merge stored procedure, which can be set only when the container is created. Microsoft states that accounts with multiple write regions cannot use strong consistency; strong consistency is available with a single write region, where a write commits only after every region acknowledges it. Data and throughput are billed in every region you add.

Vector search for AI applications

DynamoDB added vector indexes on 5 August 2026. You define them with CreateTable or UpdateTable and query with SearchVectors, which performs approximate nearest neighbour search with cosine, dot product or Euclidean distance. Vector indexes require on-demand capacity (5 per table by default, adjustable to 20), are indexed asynchronously after each write, work with global tables and are not supported by DAX.

Cosmos DB for NoSQL stores vectors inside documents and offers flat (exact, up to 505 dimensions), quantizedFlat and DiskANN indexes (up to 4,096 dimensions), queried with the VectorDistance function alongside normal WHERE filters. Microsoft notes that vector search is not supported on accounts with shared database throughput and cannot be disabled on a container once enabled.

Pricing and licensing

Amazon DynamoDB (US East, N. Virginia, Standard table class, USD, from the AWS DynamoDB pricing pages on 7 November 2026): on-demand 0.625 per million write request units and 0.125 per million read request units; storage 0.25 per GB-month; provisioned 0.00065 per WCU-hour and 0.00013 per RCU-hour; point-in-time recovery 0.20 per GB-month; global table replicated writes 0.625 per million. The Standard-IA class lowers storage to 0.10 per GB-month at higher request prices. Vector search is billed separately by data written to vector indexes, data searched and vector index storage; check the on-demand pricing page for the rates. The free tier gives 25 GB and 25 provisioned WCUs and RCUs per Region each month.

Azure Cosmos DB (East US, USD, from Microsoft's Azure Retail Prices API on 7 November 2026, request unit accounts): standard provisioned throughput 0.008 per 100 RU/s per hour (about 5.84 a month); multi-region write throughput 0.016 per 100 RU/s per hour; autoscale 0.012 per 100 RU/s per hour, billed at the highest RU/s reached each hour; serverless 0.25 per million RUs; transactional storage 0.25 per GB-month in each region. The lifetime free tier covers 1,000 RU/s and 25 GB for one account per subscription.

Putting them side by side. The per-unit prices are not comparable directly, because a DynamoDB request unit and a Cosmos DB RU measure different amounts of work. As arithmetic only: 400 RU/s provisioned in one Cosmos DB region with 10 GB stored is 4 x 5.84 + 10 x 0.25 = USD 25.86 a month; on DynamoDB on-demand, 10 million 1 KB writes and 50 million 4 KB strongly consistent reads with 10 GB stored is 10 x 0.625 + 50 x 0.125 + 10 x 0.25 = USD 15.00 a month before the free tier. These workloads are not equivalent; use the AWS Pricing Calculator and the Azure pricing calculator with your own traffic.

Pricing checked on the vendors' official pages on 7 November 2026. Prices change; confirm before buying.

Where each one leads

Amazon DynamoDB strengths

  • Serverless on-demand mode with no throughput to configure, in multi-Region tables too
  • Transactions across items and tables, up to 100 actions
  • Global tables with a strong consistency option (MRSC) across three Regions
  • Deep integration with Lambda, IAM, Streams and other AWS services
  • Permanent free tier of 25 GB and 25 WCUs and RCUs per Region

Azure Cosmos DB strengths

  • Five consistency levels, settable per account and relaxable per request
  • Multi-region writes in any number of Azure regions, with custom conflict resolution in the API for NoSQL
  • Larger items (2 MB) and automatic indexing of every property by default
  • SQL-like query language plus MongoDB, Cassandra, Gremlin and Table APIs
  • Vector search with exact and DiskANN indexes inside the same documents

Limitations

Amazon DynamoDB limitations

  • AWS only
  • 400 KB item size limit
  • Queries must follow keys and indexes; no joins, and other access becomes a scan
  • MRSC global tables need exactly three listed Regions and drop transactions, TTL and LSIs
  • Vector indexes require on-demand capacity

Azure Cosmos DB limitations

  • Azure only
  • Transactions limited to one logical partition key, with a 5-second, 100-operation batch
  • Logical partitions capped at 20 GB and 10,000 RU/s unless you use hierarchical keys
  • Strong consistency is not available with multiple write regions
  • Serverless accounts are single-region and not covered by the free tier

When to choose each

Choose Amazon DynamoDB if

  • Your applications run on AWS
  • You need atomic updates across several tables or unrelated items
  • You want strong consistency across Regions with every replica writable
  • You prefer one data model and API with pay-per-request billing

Choose Azure Cosmos DB if

  • Your applications run on Azure
  • You want tunable consistency such as session or bounded staleness
  • You need active-active writes in more than three regions
  • Your items exceed 400 KB, or you want MongoDB, Cassandra or Gremlin wire compatibility

When neither is right

Final recommendation

Bottom line

Start from your cloud: DynamoDB for AWS, Azure Cosmos DB for Azure, because neither runs elsewhere and both are most useful next to their platform's other services. Within that, check the details that are hard to change later: DynamoDB's 400 KB items and key-driven queries against Cosmos DB's 20 GB logical partitions and single-partition transactions, and the multi-region model you need (DynamoDB MRSC across three Regions, or Cosmos DB multi-region writes without strong consistency). Model costs with your real operation mix, since the two request units measure different things.

Frequently asked questions

Is Cosmos DB the Azure equivalent of DynamoDB?

Broadly, yes: both are first-party, managed, partitioned NoSQL databases billed by request units or provisioned throughput. Cosmos DB adds several APIs and five consistency levels, allows 2 MB items and scopes transactions to one logical partition; DynamoDB has one API, 400 KB items and transactions across tables.

Can I use strong consistency across regions?

DynamoDB offers multi-Region strong consistency (MRSC) global tables across exactly three Regions, with every replica writable but without transactions, TTL or LSIs. Cosmos DB offers strong consistency across regions only with a single write region; Microsoft states that accounts with multiple write regions cannot use strong consistency.

Do both have vector search?

Yes. DynamoDB made vector indexes and the SearchVectors API generally available on 5 August 2026, for on-demand tables. Cosmos DB for NoSQL offers integrated vector search with flat, quantizedFlat and DiskANN indexes up to 4,096 dimensions.

Which has a better free tier?

They differ. DynamoDB gives 25 GB and 25 provisioned WCUs and RCUs per Region each month, permanently. Cosmos DB gives one account per subscription 1,000 RU/s and 25 GB for the life of the account, if you opt in at creation; it does not apply to serverless accounts.

How large can items be?

DynamoDB items are limited to 400 KB including attribute names. Cosmos DB items can be up to 2 MB, and up to 16 MB in the API for MongoDB when the feature is enabled.

Sources

Checked November 2026.

How we research comparisons: our editorial method.

More comparisons

Browse all SQL comparisons or the tools directory.