Database Types

AWS offers several categories of database service, each optimized for a different data model and access pattern. Choosing the right category for an application's data model is the first decision when designing a database solution on AWS. In summary:


The subsections below describe each category of database available on AWS and when to select it.

Relational Databases

Relational databases are organized around a relational data model and use SQL for querying data. They are a good choice for applications that require ACID compliance, strong data consistency, and support for complex queries. Examples on AWS include Amazon RDS for MySQL, PostgreSQL, and Oracle, as well as Amazon Aurora. See Essential Concepts for a general introduction to relational database concepts.

Key-value Databases

Key-value databases store data in a simple key-value format and are optimized for high performance and scalability. They suit applications that require high read/write throughput, low latency, and simple data models. Examples on AWS include Amazon DynamoDB and Amazon ElastiCache with Memcached.

Document Databases

Document databases store data as semi-structured or unstructured documents and are optimized for flexibility and scalability. They suit applications that require dynamic, schema-less data models and support for nested data structures. Examples on AWS include Amazon DocumentDB (with MongoDB compatibility) and MongoDB Atlas. Compare this with MySQL's native JSON support for storing semi-structured data inside a relational schema.

In-memory Databases

In-memory databases store data entirely in memory and are optimized for high performance and low latency. They suit applications that require fast access to frequently accessed data, such as real-time analytics or caching. Examples on AWS include Amazon ElastiCache with Redis and Memcached.

Graph Databases

Graph databases store data as nodes and edges and are optimized for complex relationship mapping. They suit applications that require support for highly connected data, such as social networks, recommendation engines, and fraud detection. Examples on AWS include Amazon Neptune and Neo4j.

Time-series Databases

Time-series databases store data as a series of timestamped values and are optimized for handling large amounts of time-series data. They suit applications that require high performance and scalability for time-series data, such as IoT and log data. Examples on AWS include Amazon Timestream and InfluxDB. See also Date and Time for MySQL's temporal data types and functions.

Ledger Databases

Ledger databases provide an immutable, tamper-proof ledger of all transactions in an application. They suit applications that require a transparent and secure audit trail, such as financial services and supply chain management. The example on AWS is Amazon Quantum Ledger Database (QLDB).

# List the relational database engines and versions available through
# Amazon RDS, to help decide which relational option fits an application
# that needs an existing engine's compatibility (see "Non-Aurora RDS" above)
aws rds describe-db-engine-versions \
    --engine mysql \
    --query "DBEngineVersions[].EngineVersion" \
    --output table

# Compare against Aurora MySQL-Compatible Edition versions
aws rds describe-db-engine-versions \
    --engine aurora-mysql \
    --query "DBEngineVersions[].EngineVersion" \
    --output table