Choosing an AWS database service
Taking the first step
Purpose |
Help determine which AWS database or databases are the best fit for your organization. |
Last updated |
May 13, 2024 |
Covered services |
Introduction
AWS offers a growing number of database options (currently more than 15) to support diverse data models. These include relational, key-value, document, in-memory, graph, time series, wide-column, and ledger databases.
Choosing the right database or multiple databases requires you to make a series of decisions based on your organizational needs. This decision guide will help you ask the right questions, provide a clear path for implementation, and help you migrate from your existing database.
Understand
Databases are important backend systems for storing data for any type of application—whether it's a small mobile app or an enterprise application with internet-scale and real-time requirements.
This decision guide is designed to help you understand the range of choices that are available, establish the criteria for making your database choice, and provide you with detailed information on the unique properties of each database. Then you can learn more about the capabilities that each database offers.
What kinds of applications do people build using AWS databases?
-
Internet-scale applications: These applications can handle millions of requests per second over hundreds of terabytes of data. They automatically scale vertically and horizontally to provide flexibility for your workloads.
-
Real-time applications: Real-time applications such as caching, session stores, gaming leaderboards, ride hailing, ad targeting, and real-time analytics need microsecond latency and high throughput to support millions of requests per second.
-
Enterprise applications: Enterprise applications manage core business processes (such as sales, billing, customer service, and human resources) and line-of-business processes (such as a reservation system at a hotel chain or a risk-management system at an insurance company). These applications need databases that are fast, scalable, secure, available, and reliable.
-
Generative AI applications: Your data is the key to moving from generic applications to generative AI applications that create differentiating value for your customers and their business. Often, this data is stored in operational databases that power your applications.
Note
This guide focuses on databases that are suitable for online transaction processing (OLTP) applications. If you need to store and analyze massive amounts of data quickly and efficiently (a requirement that is typically met by an OLAP application), AWS offers Amazon Redshift. Amazon Redshift is a fully managed, cloud-based data warehousing service that is designed to handle large-scale analytics workloads.
There are two high-level categories of AWS OLTP databases—relational and non-relational.
-
The AWS relational database family includes eight popular engines for Amazon RDS and Amazon Aurora. The Amazon Aurora engines include Amazon Aurora with MySQL compatibility, and Amazon Aurora with PostgreSQL compatibility. The Amazon RDS engines include Db2, MySQL, MariaDB, PostgreSQL, Oracle, and SQL Server. AWS also offers deployment options such as Amazon RDS Custom and Amazon RDS on AWS Outposts.
-
The non-relational database options are designed for specific data models. These include key-value, document, caching, in-memory, graph, time series, wide-column, and ledger data models.
We explore all of these in detail in the Choose section of this guide.
Database migration
Before deciding which database service you want to use, you should consider your business objective, database selection, and how you're going to migrate your existing databases.
The best database migration strategy helps you to take full advantage of the AWS Cloud. This might involve migrating your applications to use purpose-built cloud databases. You might just want the benefit of using a fully managed version of your existing database, such as RDS for PostgreSQL or RDS for MySQL.
Alternatively, you might want to migrate from your commercially licensed databases, such as Oracle or SQL Server, to Amazon Aurora. Consider modernizing your applications and choosing the databases that best suit your applications' workflow requirements.
For example, if you choose to first transition your applications and then transform them, you might decide to re-platform. This process makes no changes to the application that you use, but lets you take advantage of a fully managed service in the cloud. When your databases are fully in the AWS Cloud, you can start working to modernize your application. This strategy can help you exit your current on-premises environment quickly, and then focus on modernization.
The following image shows how you can use AWS Database Migration Service
Consider
You're considering hosting a database on AWS. This might be to support a greenfield/pilot project as a first step in your cloud migration journey, or you might want to migrate an existing workload with as little disruption as possible. Or perhaps you might want to port your workload to managed AWS services, or even refactor it to be fully cloud focused.
Whatever your goal is, considering the right questions will make your database decision easier. Here's a summary of the key criteria to consider.
Choose
Now that you know the criteria for evaluating your database options, you're ready to choose which AWS database services might be a good fit for your organization.
This table highlights the type of data that each database is optimized to handle. Use it to help determine the database that is the best fit for your use case.
Database type | When would you use it? | What is it optimized for? | Related database engines or services |
---|---|---|---|
Relational |
Use when you're migrating or modernizing an on-premises relational workload, or if your workload has less predictable query patterns. |
Optimized for structured data that is stored in tables, rows, and columns. Relational databases support complex queries through joins. |
|
Key-value |
Use for workloads such as session stores or shopping carts. Key-value databases can scale to large amounts of data and extremely high throughput of requests, while servicing millions of simultaneous users through distributed processing and storage. |
Optimized for consistent single-digit millisecond performance at any scale (meaning any number of writes and reads). |
|
In-memory |
Use Amazon ElastiCache when you need a caching layer to improve read performance. Use Amazon MemoryDB when you need full data persistence, but still need sub-millisecond read latencies. |
Optimized to support microsecond reads and sub-millisecond writes. MemoryDB supports microsecond reads and single-digit millisecond writes. ElastiCache is an ephemeral cache, while MemoryDB is an in-memory database. |
|
Document |
Use when you want to store JSON-like documents with rich querying abilities across the fields of the documents. |
Optimized for storing semi-structured data as documents with multilayered attributes. |
|
Wide-column |
Use when you need to migrate your on-premises Cassandra workloads, or when you need to process data at high speeds for applications that require single-digit millisecond latency. |
Optimized for workloads that require heavy reads/writes and high throughput, coupled with low latency and linear scalability. |
|
Graph |
Use when you have to model complex networks of objects, such as social networks, fraud detection, and recommendation engine use cases. |
Optimized for traversing and evaluating large numbers of relationships, and identifying patterns with minimal latency. |
|
Time series |
Use when you have a large amount of time series data, potentially from a number of sources, such as Internet of Things (IoT) data, application metrics, and asset tracking. |
Optimized for storing and querying data that is associated with timestamps and trend lines. |
|
Ledger |
Use when your organization has to communicate with other entities (businesses, customers) and you need a way to verify and trust each other—or when you need to retrieve the current state of data, and also need to prove how data mutated into the current state. |
Optimized for maintaining a complete, immutable, and verifiable history of database changes. |
Use
This section helps you learn more about the database service or services that you've chosen, and how to get started with them.
The database you've chosen might not satisfy all of your requirements perfectly, so it's important to consider your needs and workload requirements carefully.
Prioritize based on the considerations covered in this guide, the requirements that you must meet to the highest standard, the requirements that you have some flexibility on, and the requirements that you might not need to meet. This will help you make effective trade-offs and lead to the best possible outcome for your unique circumstances.
Also consider that, usually, you can cover your application requirements with a mix of best-fit databases. By building a solution with multiple database types, you can use the strengths that each type provides.
For example, in an ecommerce use case, you might use Amazon DocumentDB (for product catalogs and user profiles) for the flexibility that is provided by semi-structured data—but also for the low, predictable latency provided by DynamoDB when your users are browsing your product catalog. You might also use Aurora for inventory and order processing, where a relational data model and transaction support are needed.
To help you learn more about each of the available AWS database services, we have provided a pathway to explore how each of the services work. The following section provides links to in-depth documentation, hands-on tutorials, and resources to help you get started.
Explore
Architecture diagrams Explore reference architecture diagrams to help you develop, scale, and test your databases on AWS. |
Whitepapers Explore whitepapers to help you get started, learn best practices, and migrate your databases. |
AWS solutions Explore vetted solutions and architectural guidance for common use cases for databases. |