Skip to content
Aviato Consulting
Google Cloud Architecture Tool

Interactive Google Cloud Database Chooser

Compare AlloyDB, Cloud Spanner, Cloud SQL, Bigtable, Firestore, Memorystore, and BigQuery. Rank databases for your workload and trace how reads and writes work step by step.

Relational (SQL & ACID)

Cloud SQL · AlloyDB · Spanner

Structured schemas, foreign keys, and ACID consistency—scaling from regional MySQL/Postgres/SQL Server up to 100x faster HTAP on AlloyDB and 99.999% global horizontal scale on Spanner.

NoSQL & In-Memory

Firestore · Bigtable · Memorystore

Purpose-built engines for serverless indexed JSON documents (Firestore), petabyte single-keyed wide-column streams (Bigtable), and microsecond in-memory caching (Memorystore).

Analytics & Read/Write Paths

BigQuery & Engine Internals

Trace how requests move through query planners, buffer caches, WAL logs, Paxos quorums, and Google Colossus storage across operational and analytical engines.

Prefer a Step-by-Step Flowchart?

Walk through our interactive YES / NO Google Cloud Database Decision Tree to trace structured vs unstructured, OLTP vs analytics, and relational vs NoSQL paths in seconds.

Open Visual Decision Tree →
Interactive Decision Engine

01. Choose Your Workload & See the Trade-Offs

Select where you are migrating from and how your application queries data. All Google Cloud databases are ranked below in a single list—with our recommended choice at the top and alternatives in order underneath.

Pre-fills typical data model & query patterns for that source platform.

Determines whether single-primary or distributed sharding is needed.

1. Recommended Database · Relational · Enterprise PostgreSQL

AlloyDB for PostgreSQL

See how reads & writes work ↓

Google-engineered PostgreSQL delivering 4x faster transactional throughput and up to 100x faster analytical queries via an autopilot columnar engine.

Why We Recommend AlloyDB Over Cloud SQL (Second Choice)

AlloyDB disaggregates compute from Google Colossus storage for 4x faster transactional writes, instant fault recovery, 99.99% HA inclusive of maintenance, and 100x faster analytical queries via its columnar engine.

Why It Fits Your Selection
  • • Full PostgreSQL compatibility + JSONB indexing
  • • 99.99% HA SLA including maintenance windows
  • • Built-in columnar engine for hybrid OLTP + OLAP
Trade-Offs & Constraints
  • • Primary write node is regional (use Spanner for global active-active writes)
  • • Higher base minimum footprint than small Cloud SQL instances
Why Not Another Option?
  • Why not Cloud SQL? Lacks AlloyDB's disaggregated storage (4x faster OLTP) and in-memory columnar engine (100x faster analytics).
  • Why not Cloud Spanner? If writes stay in one region, AlloyDB gives lower latency and 100% PostgreSQL extension compatibility at lower cost.
  • Why not BigQuery? BigQuery is built for multi-second OLAP scans, not millisecond transactional row updates.
Alternatives Ranked in Order (2 – 6) Click any database row below to trace its read and write path in Section 02 ↓
2. Second Choice (Runner-Up)
Cloud SQL
Relational · Managed MySQL, PostgreSQL & SQL Server

When to choose instead: Choose Cloud SQL if your database fits comfortably on a single regional primary instance (up to 128 vCPUs / 64TB) and you want a straightforward lift-and-shift for MySQL, PostgreSQL, or SQL Server.

Key limitation: Single primary write node cannot scale writes horizontally across shards, and row-oriented storage thrashes on 100M-row analytical scans.

Trace reads & writes ↓
Google Cloud databases

02. How reads and writes work

Pick a database and an operation to follow a request step by step, from your app through compute and storage and back.

BigQuery · Analytical query

Analytics

A query fans out across thousands of workers that scan only the columns they need.

SQL
Step 1 of 7

Submit a query job

Your app sends GoogleSQL to the Jobs API. BigQuery checks permissions and whether an identical recent query can be answered from the results cache.

Fit for your app
Example
SELECT region, SUM(revenue) AS total
FROM `shop.orders`
WHERE order_date >= '2026-01-01'   -- partition pruning
GROUP BY region
ORDER BY total DESC;

Cost and speed depend on bytes scanned. Partition by date, cluster by common filters, and select only the columns you need.

Complete Reference

03. Google Cloud Database Trade-Off Matrix

Filter by category to compare data models, scaling mechanics, consistency guarantees, AWS equivalents, and known anti-patterns side by side.

Database Data Model Scale & SLA Consistency & Transactions AWS / Legacy Equivalent Primary Pitfall to Avoid
Cloud SQL
Relational
Managed PostgreSQL, MySQL, SQL Server (Tables, Rows, JSONB) Vertical scale (up to 128 vCPU / 64TB) + Read Replicas · 99.95%–99.99% SLA Full ACID (Single-region primary write instance) AWS RDS, Azure SQL Database Vertical Write Ceiling Cannot scale writes horizontally across shards without manual application sharding.
AlloyDB
Enterprise PostgreSQL
100% PostgreSQL-compatible + ML Autopilot Columnar Engine + `pgvector` Disaggregated compute/storage up to 128TB + Read Pools · 99.99% SLA Full ACID (4x faster OLTP, 100x faster OLAP than standard Postgres) AWS Aurora PostgreSQL, Oracle (modernized) Single-Region Primary Writes For multi-region active-active writes with zero failover RPO globally, use Cloud Spanner.
Cloud Spanner
Global Relational
Relational SQL tables, Interleaved parent-child tables, JSONB, Graph Limitless horizontal scale across Paxos splits · Up to 99.999% SLA External strong consistency globally via TrueTime + Serializable ACID DynamoDB Global Tables (when SQL/ACID needed), CockroachDB, Sharded RDS Monotonic Primary Keys Sequential auto-increment IDs cause split hotspotting; use UUIDv4, bit-reversed sequences, or composite keys.
BigQuery
Columnar OLAP SQL
Serverless Capacitor columnar tables, nested `STRUCT` / `JSON`, BigQuery ML Serverless petabyte-to-exabyte scale across 2,000+ parallel Dremel slots · 99.99% SLA Snapshot isolation & multi-statement SQL transactions (built for batch/streaming OLAP) Snowflake, AWS Redshift, Teradata, Databricks SQL Using as a Low-Latency OLTP Store 1–2s slot startup and columnar file rewrites make single-row point lookups and frequent row updates slow.
Bare Metal Solution
Specialized Hardware
Customer-managed Oracle RAC / Exadata-class relational databases Dedicated certified hardware in Google Cloud regions (<2ms interconnect) Full Oracle ACID & native RAC clustering On-Premises Oracle RAC, AWS RDS Custom for Oracle Not Serverless Intended for lift-and-shift Oracle licensing continuity before modernizing onto AlloyDB or Spanner.
Firestore
Document NoSQL
Serverless hierarchical JSON Documents & Collections (plus MongoDB-compatible API) Serverless scale-to-zero up to millions of concurrent clients · Up to 99.999% SLA Strong global consistency + Multi-document ACID transactions (Serializable) AWS DynamoDB (Document + GSI workloads), MongoDB Atlas, DocumentDB Ad-Hoc Multi-Collection Joins Queries must be backed by indexes; complex relational joins or OLAP aggregations belong in AlloyDB or BigQuery.
Cloud Bigtable
Wide-Column NoSQL
Sparse wide-column table indexed strictly by a single lexicographical Row Key Linear horizontal node scaling to billions of rows / petabytes · Up to 99.999% SLA Single-row atomic mutations; eventual replication across multi-cluster nodes Apache HBase, Cassandra, DynamoDB (pure single-key/time-series at massive throughput) Storing & Querying Raw JSON No secondary indexes on JSON fields! Filtering on non-key JSON attributes forces slow full-table scans.
Memorystore
In-Memory KV
Managed in-memory Redis, Valkey, and Memcached key-value data structures Sub-millisecond microsecond response times with HA replica failover · 99.9%–99.99% SLA In-memory atomic commands, transient/caching layer AWS ElastiCache, Azure Cache for Redis Using as Sole System of Record Designed as an ultra-fast caching/session/leaderboard tier paired with a durable database (Spanner, AlloyDB, Firestore).

How to Choose the Right Google Cloud Database (Quick Reference)

Selecting the right Google Cloud database comes down to four architectural requirements: data model (relational tables, JSON documents, wide-column key-value, or columnar warehouse), query pattern (point lookups, indexed filters, SQL joins, or petabyte scans), write scaling (single regional primary vs. horizontal multi-region sharding), and latency target (microseconds, milliseconds, or seconds).

  • Choose AlloyDB for PostgreSQL when you need 100% PostgreSQL compatibility with 4x faster transactional throughput, a 99.99% SLA inclusive of maintenance, and an in-memory columnar engine that runs analytical queries up to 100x faster.
  • Choose Cloud Spanner when writes outgrow a single machine or you require active-active multi-region availability (99.999% SLA) with external strong consistency via Google TrueTime.
  • Choose Cloud SQL (MySQL, PostgreSQL, SQL Server) when lifting and shifting standard regional relational databases (such as AWS RDS) that fit comfortably on a single primary instance up to 128 vCPUs and 64TB.
  • Choose Firestore when building serverless web/mobile applications or migrating JSON document workloads (such as MongoDB or AWS DynamoDB with Global Secondary Indexes) that require automatic attribute indexing and multi-document ACID transactions.
  • Choose Cloud Bigtable when ingesting and reading millions of operations per second at single-digit millisecond latency addressed strictly by a single Row Key or Row Key prefix (time-series, IoT telemetry, ad-tech, ML feature serving).
  • Choose BigQuery when running serverless analytical (OLAP) SQL queries over terabytes to petabytes of columnar data, BI dashboards, and Vertex AI pipelines.
  • Choose Memorystore (Redis / Valkey / Memcached) when you need sub-millisecond (<1ms) in-memory caching, session storage, rate limiters, or real-time leaderboards in front of your primary database.

Why DynamoDB-to-Bigtable Migrations Trip Over JSON

Teams migrating from AWS often map Amazon DynamoDB directly to Cloud Bigtable because both are high-scale NoSQL stores. However, DynamoDB workloads split into two distinct patterns:

  1. Single-Key / Prefix Time-Series Workloads (Choose Cloud Bigtable): Every query fetches a row by key or scans a key prefix (`device#4821#20261016`). Bigtable routes the request directly to the owning tablet node, merges the in-memory memtable and Colossus SSTables, and returns in single-digit milliseconds.
  2. JSON Document Workloads with Secondary Indexes (Choose Firestore or Spanner): If your DynamoDB table stores nested JSON attributes and uses Global Secondary Indexes (GSIs) to filter by `status`, `region`, or `customer_email`, storing raw JSON inside a Bigtable cell will force slow full-table scans because Bigtable only indexes the row key. Migrate GSI-heavy document workloads to Firestore or Cloud Spanner instead.
04. Architecture & Migration FAQ

Google Cloud Database Frequently Asked Questions

Which Google Cloud database should I choose for my workload?

Choose AlloyDB for PostgreSQL for demanding enterprise PostgreSQL and hybrid transactional/analytical (HTAP) workloads (99.99% SLA). Choose Cloud Spanner when you need limitless horizontal SQL write scale or multi-region active-active external consistency (up to 99.999% SLA). Choose Cloud SQL for standard single-region MySQL, PostgreSQL, or SQL Server databases (up to 64TB). Choose Firestore for serverless JSON documents, secondary attribute indexes, and real-time web/mobile sync. Choose Cloud Bigtable for petabyte-scale single row-key or time-series workloads at single-digit millisecond latency. Choose BigQuery for serverless petabyte OLAP analytics, and Memorystore for sub-millisecond in-memory Redis/Valkey caching.

What is the difference between Cloud SQL, AlloyDB, and Cloud Spanner?

All three are fully managed relational SQL databases with ACID transactions, but they use different compute and storage architectures. Cloud SQL runs managed MySQL, PostgreSQL, and SQL Server on a regional primary VM attached to persistent disk (scaling vertically up to 128 vCPUs and 64TB). AlloyDB disaggregates PostgreSQL compute from a regional log-structured storage layer—delivering 4x faster transactional writes, 99.99% availability inclusive of maintenance, and up to 100x faster analytical queries via an in-memory columnar engine. Cloud Spanner shards relational tables horizontally across unlimited Paxos splits and regions using Google TrueTime for external consistency and a 99.999% SLA.

How do reads and writes work in AlloyDB compared to standard Cloud SQL PostgreSQL?

In standard Cloud SQL PostgreSQL, the primary backend modifies pages in shared_buffers, flushes the write-ahead log (WAL), and periodically writes full dirty 8KB data pages back to persistent disk during checkpoints. In AlloyDB, the primary instance only flushes WAL records to regional log storage on commit and never writes data pages to disk; a disaggregated log-processing service materialises data blocks in the background while streaming WAL updates directly to read pool caches. For reads, AlloyDB checks shared buffers, an in-memory columnar engine (for analytical scans), and a local SSD ultra-fast cache before fetching from storage.

How does Cloud Spanner execute a strong read vs. a read-write transaction?

For a strong read, the Spanner frontend routes your SQL query to the nearest replica holding the target data splits; the replica obtains a TrueTime timestamp, confirms with the Paxos split leader that it has applied all writes up to that timestamp, and reads a lock-free multi-version snapshot from Colossus in milliseconds. For a read-write transaction, affected split leaders acquire write locks, coordinate via two-phase commit if multiple splits are involved, assign a TrueTime commit timestamp, replicate the commit log across a Paxos majority quorum, and perform a brief commit wait so the timestamp is guaranteed to be in the past everywhere.

Should I migrate AWS DynamoDB to Firestore, Cloud Bigtable, or Cloud Spanner?

Match your target to how your application queries DynamoDB. Choose Firestore if your DynamoDB tables store nested JSON documents and rely on Global Secondary Indexes (GSIs) or multi-attribute filtering. Choose Cloud Bigtable only if 100% of your reads and writes address a single deterministic Row Key or contiguous Row Key prefix at high throughput (>50,000 ops/sec). Choose Cloud Spanner if you need relational SQL joins, secondary indexes, multi-row ACID transactions, and 99.999% multi-region consistency.

Why does storing raw JSON in Cloud Bigtable cause full-table scans?

Cloud Bigtable is a wide-column key-value store that indexes strictly by a single lexicographically sorted Row Key. Unlike Firestore, AlloyDB, or AWS DynamoDB (which supports up to 20 GSIs), Bigtable treats column cell values as uninterpreted byte arrays and has no secondary indexes. If you store JSON payloads in a Bigtable cell and filter by a non-key attribute (such as status = "FAILED"), Bigtable cannot use an index and must scan every row across every tablet node.

How do BigQuery analytical reads and streaming writes work under the hood?

On a read, BigQuery parses your GoogleSQL query, applies partition and cluster pruning, and fans executionstages out across thousands of parallel Dremel compute slots that read only the referenced Capacitor columnar strips from Colossus storage, exchanging intermediate results through an in-memory shuffle tier. On a streaming write, the BigQuery Storage Write API appends protocol-buffer batches into durable write-optimised storage—making rows queryable via SQL within seconds—before converting and compacting them into compressed columnar files in the background.

When should I use Cloud Bigtable vs. BigQuery?

Use Cloud Bigtable for operational, high-concurrency, single-digit millisecond (<10ms) point reads, row-key prefix scans, and high-velocity streaming writes (such as IoT telemetry, financial ticks, or ML feature serving). Use BigQuery for analytical (OLAP) SQL queries that aggregate millions or billions of rows across columns in seconds for BI dashboards, reporting, and data warehousing. BigQuery can also query Bigtable directly in place via federated external tables without ETL.

When should I use Cloud SQL for MySQL vs. Cloud SQL for PostgreSQL?

Choose Cloud SQL for MySQL when migrating existing MySQL or AWS RDS/Aurora MySQL applications, CMS platforms, or e-commerce backends that rely on InnoDB clustered primary-key B-trees and binary log replication. Choose Cloud SQL for PostgreSQL when your application needs rich ANSI SQL joins, complex cost-based query plans, MVCC snapshot isolation, JSONB indexing, PostGIS geospatial extensions, or pgvector embeddings on a single regional primary instance.

Does Google Cloud fund database migrations from AWS RDS, Aurora, DynamoDB, or Oracle?

Yes, qualifying workloads are eligible for Google Cloud migration funding. As a Google Cloud Premier Partner and 2026 Partner of the Year for Australia and New Zealand, Aviato Consulting secures Google Cloud funding to cover upfront database discovery assessments, workload benchmarking, and migration engineering from AWS RDS, Aurora, DynamoDB, Oracle, SQL Server, and Snowflake.

Google-Funded Database Assessments

Planning a Migration from AWS RDS, Aurora, DynamoDB, or Oracle?

Do not guess on row-key design or instance sizing. Aviato's Google Cloud Principal Architects benchmark your actual query patterns, model your data for target engines, and secure Google Cloud migration funding so the upfront assessment costs you nothing.

Related Architecture & Migration Guides

Fixed price, fixed date

Talk to an architect who has done this before.

Bring your current setup and the outcome you need. You will get a view on the approach, the risks and roughly what it costs.

Book a 20-min architecture call

Straight to a senior GCP architect. No SDR, no slide deck.

Not ready to talk? See how we migrated Hapana off AWS →

Or call +61 2 8359 9507 · Hello@aviato.consulting

Call us Book a call

Quick navigation