Compare NoSQL services (DynamoDB, Cosmos DB, Firestore) features and pricing.
| Feature | AWS | Azure | GCP |
|---|---|---|---|
| Service | Amazon DynamoDB | Azure Cosmos DB | Cloud Firestore |
| Data model | Key-value + Document | Multi-model (document, key-value, graph, column-family, table) | Document (hierarchical collections and documents) |
| Global distribution | Global Tables with multi-region, multi-active replication | Turnkey multi-region writes with configurable consistency | Multi-region with automatic replication across locations |
| Max document size | 400 KB per item | 2 MB per document | 1 MB per document |
| Feature | AWS | Azure | GCP |
|---|---|---|---|
| Capacity modes | On-demand + Provisioned (auto-scaling available) | Provisioned RU/s (with autoscale) + Serverless | Provisioned throughput not applicable; pay-per-operation |
| Pricing unit | Read Capacity Units (RCU) / Write Capacity Units (WCU) | Request Units per second (RU/s) | Per document read / write / delete operations |
| Free tier | 25 GB storage, 25 RCU / 25 WCU (always free) | 1,000 RU/s and 25 GB storage (always free) | 1 GiB storage, 50K reads / 20K writes / 20K deletes per day |
| Serverless option | Yes, on-demand mode is effectively serverless | Yes, serverless capacity mode (pay-per-request) | Yes, fully serverless by default |
| Feature | AWS | Azure | GCP |
|---|---|---|---|
| Consistency | Eventual consistency (default) + Strong consistency | 5 levels: strong, bounded staleness, session, consistent prefix, eventual | Strong consistency for all reads |
| Transactions | Yes, ACID transactions across up to 100 items (TransactWriteItems / TransactGetItems) | Yes, multi-document ACID transactions within a logical partition | Yes, ACID transactions on one or more documents (batched writes and transactions) |
| Feature | AWS | Azure | GCP |
|---|---|---|---|
| Secondary indexes | Global Secondary Indexes (GSI) + Local Secondary Indexes (LSI) | Automatic indexing on all properties by default (customizable index policy) | Single-field (automatic) + Composite indexes (manual or auto-suggested) |
| Change streams | DynamoDB Streams (ordered log of item-level changes, 24h retention) | Change Feed (ordered log of changes per container, push and pull model) | Real-time listeners (snapshot listeners for live query results) |
| Feature | AWS | Azure | GCP |
|---|---|---|---|
| TTL support | Yes, per-item TTL attribute with automatic expiration | Yes, per-item TTL with default and per-document override | Yes, TTL policies with field-level expiration |
| Encryption | Encryption at rest (AWS owned / customer-managed KMS key) + in-transit (TLS) | Encryption at rest (service-managed / customer-managed keys) + in-transit (TLS) | Encryption at rest (Google-managed / customer-managed CMEK) + in-transit (TLS) |
| Backup / restore | On-demand backup + Point-in-time recovery (PITR, up to 35 days) | Continuous backup with PITR (7 or 30 day retention) + periodic backup | Point-in-time recovery (PITR, up to 7 days) + managed export/import |
[
{
"feature": "Service",
"category": "General",
"aws": "Amazon DynamoDB",
"azure": "Azure Cosmos DB",
"gcp": "Cloud Firestore"
},
{
"feature": "Data model",
"category": "General",
"aws": "Key-value + Document",
"azure": "Multi-model (document, key-value, graph, column-family, table)",
"gcp": "Document (hierarchical collections and documents)"
},
{
"feature": "Global distribution",
"category": "General",
"aws": "Global Tables with multi-region, multi-active replication",
"azure": "Turnkey multi-region writes with configurable consistency",
"gcp": "Multi-region with automatic replication across locations"
},
{
"feature": "Max document size",
"category": "General",
"aws": "400 KB per item",
"azure": "2 MB per document",
"gcp": "1 MB per document"
},
{
"feature": "Capacity modes",
"category": "Capacity",
"aws": "On-demand + Provisioned (auto-scaling available)",
"azure": "Provisioned RU/s (with autoscale) + Serverless",
"gcp": "Provisioned throughput not applicable; pay-per-operation"
},
{
"feature": "Pricing unit",
"category": "Capacity",
"aws": "Read Capacity Units (RCU) / Write Capacity Units (WCU)",
"azure": "Request Units per second (RU/s)",
"gcp": "Per document read / write / delete operations"
},
{
"feature": "Free tier",
"category": "Capacity",
"aws": "25 GB storage, 25 RCU / 25 WCU (always free)",
"azure": "1,000 RU/s and 25 GB storage (always free)",
"gcp": "1 GiB storage, 50K reads / 20K writes / 20K deletes per day"
},
{
"feature": "Serverless option",
"category": "Capacity",
"aws": "Yes, on-demand mode is effectively serverless",
"azure": "Yes, serverless capacity mode (pay-per-request)",
"gcp": "Yes, fully serverless by default"
},
{
"feature": "Consistency",
"category": "Consistency & Transactions",
"aws": "Eventual consistency (default) + Strong consistency",
"azure": "5 levels: strong, bounded staleness, session, consistent prefix, eventual",
"gcp": "Strong consistency for all reads"
},
{
"feature": "Transactions",
"category": "Consistency & Transactions",
"aws": "Yes, ACID transactions across up to 100 items (TransactWriteItems / TransactGetItems)",
"azure": "Yes, multi-document ACID transactions within a logical partition",
"gcp": "Yes, ACID transactions on one or more documents (batched writes and transactions)"
},
{
"feature": "Secondary indexes",
"category": "Indexes & Queries",
"aws": "Global Secondary Indexes (GSI) + Local Secondary Indexes (LSI)",
"azure": "Automatic indexing on all properties by default (customizable index policy)",
"gcp": "Single-field (automatic) + Composite indexes (manual or auto-suggested)"
},
{
"feature": "Change streams",
"category": "Indexes & Queries",
"aws": "DynamoDB Streams (ordered log of item-level changes, 24h retention)",
"azure": "Change Feed (ordered log of changes per container, push and pull model)",
"gcp": "Real-time listeners (snapshot listeners for live query results)"
},
{
"feature": "TTL support",
"category": "Operations",
"aws": "Yes, per-item TTL attribute with automatic expiration",
"azure": "Yes, per-item TTL with default and per-document override",
"gcp": "Yes, TTL policies with field-level expiration"
},
{
"feature": "Encryption",
"category": "Operations",
"aws": "Encryption at rest (AWS owned / customer-managed KMS key) + in-transit (TLS)",
"azure": "Encryption at rest (service-managed / customer-managed keys) + in-transit (TLS)",
"gcp": "Encryption at rest (Google-managed / customer-managed CMEK) + in-transit (TLS)"
},
{
"feature": "Backup / restore",
"category": "Operations",
"aws": "On-demand backup + Point-in-time recovery (PITR, up to 35 days)",
"azure": "Continuous backup with PITR (7 or 30 day retention) + periodic backup",
"gcp": "Point-in-time recovery (PITR, up to 7 days) + managed export/import"
}
]The Multi-Cloud NoSQL Compare tool provides a comprehensive comparison of managed NoSQL database services across AWS DynamoDB, Azure Cosmos DB, and GCP Firestore and Bigtable. It examines data models, consistency levels, global distribution capabilities, throughput pricing, and storage costs to help you choose the right NoSQL service for your workload. The comparison is especially useful for teams building globally distributed applications or event-driven architectures where NoSQL databases excel. It also clarifies the differences between document, key-value, wide-column, and graph data models offered by each provider.
Disclaimer: This tool runs entirely in your browser. No data is sent to our servers. Always verify outputs before using them in production. AWS, Azure, and GCP are trademarks of their respective owners.