ESC
Type to search guides, tutorials, and reference documentation.
Verified by Garnet Grid

Cloud-Native Database Selection

Choose the right cloud database for your workload. Covers relational, NoSQL, time-series, graph, and vector databases across AWS, Azure, and GCP with performance, cost, and migration considerations.

Choosing a database in the cloud era is more complex than “PostgreSQL or MySQL.” Cloud providers offer 15+ managed database services each, spanning relational, document, key-value, time-series, graph, and vector workloads. The wrong choice means either fighting the database to do what it wasn’t designed for, or migrating later at massive cost. The right choice starts with understanding your access patterns, consistency requirements, and scale projections.

This guide provides a framework for selecting cloud-native databases based on workload characteristics, not marketing.


Database Decision Matrix

Workload PatternBest FitAWSAzureGCP
Transactional CRUDRelationalRDS / AuroraSQL DatabaseCloud SQL / AlloyDB
Globally distributedMulti-region relationalAurora GlobalCosmos DBCloud Spanner
Document/flexible schemaDocument storeDynamoDB / DocumentDBCosmos DBFirestore
High-throughput key-valueKey-value storeDynamoDB / ElastiCacheCosmos DB / Cache for RedisMemorystore
Time-series metricsTime-series DBTimestreamData ExplorerBigQuery (streaming)
Graph relationshipsGraph DBNeptuneCosmos DB (Gremlin)No native (use Neo4j)
Full-text searchSearch engineOpenSearchAI SearchVertex AI Search
Vector/AI embeddingsVector DBOpenSearch / RDS pgvectorCosmos DB vCoreAlloyDB + pgvector
Data warehouseColumnar analyticsRedshiftSynapseBigQuery
CachingIn-memoryElastiCacheCache for RedisMemorystore

Relational Databases

When to Choose Relational

  • ACID transactions are required
  • Complex joins across multiple tables
  • Well-defined, stable schema
  • Regulatory compliance requires structured data
  • Existing team expertise in SQL

Cloud Relational Comparison

FeatureAurora (AWS)Cloud SQL (GCP)Azure SQLAlloyDB (GCP)
EngineMySQL/PostgreSQLMySQL/PostgreSQL/SQL ServerSQL Server/PostgreSQLPostgreSQL
Max storage128 TB64 TB100 TB128 TB
Read replicas1510420
Multi-regionAurora Global DatabaseCross-region replicasGeo-replicationCross-region replicas
ServerlessAurora Serverless v2Azure SQL Serverless
ColumnarColumnstore indexesBuilt-in columnar engine
Best forHigh availability, scalingStandard workloads.NET ecosystemAnalytical + transactional

NoSQL Databases

DynamoDB Design Patterns

# Single-table design for e-commerce
TABLE_SCHEMA = {
    "TableName": "ECommerce",
    "KeySchema": [
        {"AttributeName": "PK", "KeyType": "HASH"},    # Partition key
        {"AttributeName": "SK", "KeyType": "RANGE"},    # Sort key
    ],
}

# Access patterns mapped to key design:
ITEMS = [
    # Customer profile:       PK=CUSTOMER#123, SK=PROFILE
    # Customer orders:        PK=CUSTOMER#123, SK=ORDER#2025-03-01#001
    # Order items:            PK=ORDER#001,    SK=ITEM#SKU-456
    # Product:                PK=PRODUCT#SKU-456, SK=DETAILS
    # Product reviews:        PK=PRODUCT#SKU-456, SK=REVIEW#2025-03-01#user123
    
    # GSI1: Order by status   GSI1PK=STATUS#SHIPPED, GSI1SK=2025-03-01
    # GSI2: Product by category GSI2PK=CATEGORY#Electronics, GSI2SK=PRICE#0099.99
]

NoSQL Selection Guide

FeatureDynamoDBCosmos DBFirestoreMongoDB Atlas
Data modelKey-value/documentMulti-modelDocumentDocument
ConsistencyEventually/strong (per-item)5 consistency levelsStrongConfigurable
PricingRead/write capacity unitsRequest unitsDoc reads/writesInstance-based
ServerlessOn-demand modeServerless tierAlways serverlessServerless instances
Max item size400 KB2 MB1 MB16 MB
Global dist.Global tablesTurnkey multi-regionMulti-regionAtlas global clusters

Specialized Databases

Vector Databases (for AI/RAG)

PlatformTypeDimensionsBest For
PineconeManaged vector DBUp to 20KPurpose-built, low latency
pgvector (RDS/AlloyDB)PostgreSQL extensionUp to 2KExisting PostgreSQL, small-medium scale
OpenSearchSearch + vectorUp to 16KHybrid text + vector search
WeaviateOpen sourceUnlimitedSelf-managed, flexible
QdrantOpen sourceUnlimitedHigh performance, filtering

Time-Series Databases

Use CaseRecommendedWhy
IoT sensor dataTimestream / TimescaleDBOptimized for high-write time-series
Application metricsPrometheus + ThanosIndustry standard, PromQL
Business analytics over timeBigQuery / RedshiftSQL analytics, long retention
Real-time dashboardsInfluxDB / TimestreamFast aggregation queries

Migration Considerations

FactorWeightQuestions to Ask
Data volumeHighHow much data? Growth rate?
Access patternsCriticalRead-heavy or write-heavy? Query complexity?
Latency requirementsHighp99 latency target?
Consistency needsCriticalACID required? Eventual OK?
Team expertiseMediumWhat does the team know? Training budget?
Vendor lock-inMediumIs portability important?
Cost at scaleHighModel costs at 10x current traffic
ComplianceCriticalData residency? Encryption? Audit requirements?

Anti-Patterns

Anti-PatternProblemFix
Using relational for everythingForcing graph queries into SQL joinsUse graph DB for relationship-heavy workloads
”We’ll scale later”Choosing based on today’s data, ignoring growthModel costs and performance at 10x scale
NoSQL without access pattern designRandom queries on DynamoDB → expensive scansDesign keys around access patterns first
Multi-database without justification5 databases for 3 servicesConsolidate unless workloads genuinely differ
Ignoring egress costsData transfer between services crushes budgetCo-locate databases with compute
No connection poolingLambda → RDS = connection exhaustionUse RDS Proxy, PgBouncer, or serverless DB

Checklist

  • Access patterns documented before selecting database
  • Cost modeled at current and 10x projected scale
  • Consistency requirements defined per data domain
  • Latency targets specified (p50, p95, p99)
  • Multi-region requirements assessed
  • Connection management strategy (pooling, proxy)
  • Backup and point-in-time recovery configured
  • Encryption at rest and in transit enabled
  • Monitoring: query latency, connection count, storage growth
  • Migration plan if current choice needs to change
  • Vendor lock-in assessment: portability of schema and queries

:::note[Source] This guide is derived from operational intelligence at Garnet Grid Consulting. For database consultation, visit garnetgrid.com. :::

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →