|
MySQL
PostgreSQL
Oracle
AWS Aurora
Cassandra
MongoDB
Spanner
Yugabyte
|
MySQL
PostgreSQL
Oracle
AWS Aurora
Cassandra
MongoDB
Spanner
Yugabyte
|
CockroachDB |
Database horizontal scale
|
Manual Sharding
Add on configuration
Node based, automated read scale, limited write
Node based, automated for both reads and writes
|
Manual Sharding
Add on configuration
Node based, automated read scale, limited write
Node based, automated for both reads and writes
|
Node based, automated for both reads and writes |
Database load balancing (internal)
|
Manual - not part of database
None and full copies across regions
Even distribution to optimize storage
|
Manual - not part of database
None and full copies across regions
Even distribution to optimize storage
|
Detailed options to optimize storage, compute and latency |
Failover
|
Manual - not part of database
Automated for reads, limited for writes to one region
Automated for reads, limited guarantees for writes
Fully automated for both reads and writes
|
Manual - not part of database
Automated for reads, limited for writes to one region
Automated for reads, limited guarantees for writes
Fully automated for both reads and writes
|
Fully automated for both reads and writes |
Automated repair and RPO(Recovery Point Objective)
|
Manual repair RPO ~1-60 mins
Automated RPO ~1 -5 mins
Manual & automated repair RPO <1 min
"Automated repair RPO <10 sec"
|
Manual repair RPO ~1-60 mins
Automated RPO ~1 -5 mins
Manual & automated repair RPO <1 min
"Automated repair RPO <10 sec"
|
Automated repair RPO = 0 sec |
Distributed reads
|
Manual - asynchronous
Yes
|
Manual - asynchronous
Yes
|
Yes |
Distributed transactions
|
No
Lightweight transactions only
Yes
|
No
Lightweight transactions only
Yes
|
Yes |
Database isolation levels
|
Single region consistent default - Snapshot highest - Serializable
Eventual consistent default - Read uncommitted highest - Snapshot read
Eventual consistent - No transaction isolation guarantees
Default - Snapshot highest - Serializable
|
Single region consistent default - Snapshot highest - Serializable
Eventual consistent default - Read uncommitted highest - Snapshot read
Eventual consistent - No transaction isolation guarantees
Default - Snapshot highest - Serializable
|
Guaranteed consistent default - Serializable highest - Serializable |
Potential data issues (default)
|
Phantom reads, non-repeatable reads, write skew
Dirty reads, phantom reads, non-repeatable reads, write skew
Dirty reads, phantom reads, non-repeatable reads, write conflicts
None
Phantom reads, non-repeatable reads
|
Phantom reads, non-repeatable reads, write skew
Dirty reads, phantom reads, non-repeatable reads, write skew
Dirty reads, phantom reads, non-repeatable reads, write conflicts
None
Phantom reads, non-repeatable reads
|
None |
SQL
|
Yes
No
Yes - with limitations
|
Yes
No
Yes - with limitations
|
Yes - wire compatible with PostgreSQL |
Database schema change
|
Yes
Offline
Online, Active and Dynamic
|
Yes
Offline
Online, Active and Dynamic
|
Online, Active and Dynamic |
Cost based optimization
|
Yes
No
?
No
|
Yes
No
?
No
|
Yes |
Data Geo-partitioning
|
No
Yes, object level
Yes
No
|
No
Yes, object level
Yes
No
|
Yes, row level |
Upgrade method
|
Offline
Online, rolling
|
Offline
Online, rolling
|
Online, rolling |
Multi-region
|
Yes - manual
Yes, but not for writes
Yes, for both reads and writes
|
Yes - manual
Yes, but not for writes
Yes, for both reads and writes
|
Yes for both reads and writes |
Multi-cloud
|
No
Yes
|
No
Yes
|
Yes |