Amazon Web Services provides a number of database alternatives for developers. You can run fully managed relational and NoSQL services or you can operate your own database in the cloud on Amazon EC2 and Amazon EBS.
|If You Need||Consider Using|
|A relational database service with minimal administration||Amazon RDS, a fully managed service that offers a choice of MySQL, Oracle, SQL Server, PostgreSQL, or Amazon Aurora database engines, scale compute & storage, Multi-AZ availability, Read Replicas, and more.|
|A fast, highly scalable NoSQL database service||Amazon DynamoDB, a fully managed service that offers extremely fast performance, seamless scalability and reliability, low cost and more.|
|An easy-to-operate in-memory cache||Amazon ElastiCache, a fully managed service that offers a choice of two in-memory caching engines, Memcached and Redis|
|A fast, petabyte-scale data warehouse||Amazon Redshift, a fully managed service that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools|
|A relational database you can manage on your own||Your choice of relational AMIs on Amazon EC2 and EBS that provide scale compute & storage, complete control over instances, and more.|
This page contains the following categories of information. Click to jump down:
Amazon Relational Database Service (Amazon RDS) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks, freeing you up to focus on your applications and business.
Amazon RDS gives you access to the capabilities of a familiar MySQL, Oracle, SQL Server, or PostgreSQL database engine. This means that the code, applications, and tools you already use today with your existing databases can be used with Amazon RDS. Amazon RDS automatically patches the database software and backs up your database, storing the backups for a user-defined retention period and enabling point-in-time recovery. You benefit from the flexibility of being able to scale the compute resources or storage capacity associated with your relational database instance via a single API call. In addition, Amazon RDS database engines offer two distinct but complementary replication features: Multi-AZ deployments and Read Replicas; these can be used alone or in conjunction to gain enhanced database availability and protect your latest database updates against unplanned outages. Read Replicas can also help you scale beyond the capacity constraints of a single DB Instance for read-heavy database workloads.
We recommend Amazon RDS for customers who have a combination of needs such as:
- Run existing or new applications, code, or tools that require a relational database
- Want native access to a MySQL, Oracle, SQL Server, or PostgreSQL database engines, but prefer to offload the infrastructure management and database administration to AWS
- Want to exploit the Multi-AZ and Read Replica features to achieve enhanced database availability and read scalability
- Like the flexibility of being able to scale their database compute and storage resources with an API call, and only pay for the infrastructure resources they actually consume
Now in preview, Amazon Aurora joins MySQL, Oracle, Microsoft SQL Server, and PostgreSQL as the fifth database engine available to customers through Amazon RDS. Amazon Aurora is a MySQL-compatible, relational database engine that combines the speed and availability of high-end commercial databases with the simplicity and cost-effectiveness of open source databases. Amazon Aurora provides up to five times better performance than MySQL at a price point one tenth that of a commercial database while delivering similar performance and availability. Amazon RDS handles routine database tasks such as provisioning, patching, backup, recovery, failure detection, and repair.
Multi-AZ deployments are presently supported for Amazon RDS for MySQL, Oracle, PostgreSQL, and Amazon Aurora. Read Replicas are presently supported for Amazon RDS for MySQL, PostgreSQL, and Amazon Aurora.
For more information, see the Amazon RDS detail page.
Amazon DynamoDB is ideal for database applications that require very low latency and predictable performance at any scale but don’t need complex querying capabilities like joins or transactions. Amazon DynamoDB is a fully-managed NoSQL database service that offers high performance, predictable throughput and low cost. It is easy to set up, operate, and scale.
With Amazon DynamoDB, you can start small, specify the throughput and storage you need, and easily scale your capacity requirements on the fly. Amazon DynamoDB automatically partitions data over a number of servers to meet your request capacity. In addition, DynamoDB automatically replicates your data synchronously across multiple Availability Zones within an AWS Region to ensure high-availability and data durability.
Amazon DynamoDB supports both document and key-value data models. The service doesn’t require a fixed schema and enables data access mainly through primary keys. In addition, the service defaults to strongly consistent reads and natively supports Atomic Counters, allowing you to atomically increment or decrement numerical attributes with a single API call.
We recommend Amazon DynamoDB for customers who have a combination of needs, such as:
- Need to build highly scalable applications that require extremely high throughput and low latencies for both reads and writes
- Require the ability to scale to extremely large datasets while maintaining predictable performance, even if starting with a small dataset
- Mainly use keys to access their data
- Don’t want the administrative burden of running their own highly available distributed database cluster
For more information, see the Amazon DynamoDB detail page.
ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases. ElastiCache supports two open-source in-memory caching engines:
- Memcached - a widely adopted memory object caching system. ElastiCache is protocol compliant with Memcached, so popular tools that you use today with existing Memcached environments will work seamlessly with the service.
- Redis – a popular open-source in-memory key-value store that supports data structures such as sorted sets and lists. ElastiCache supports Master / Slave replication and Multi-AZ which can be used to achieve cross AZ redundancy.
Amazon ElastiCache automatically detects and replaces failed nodes, reducing the overhead associated with self-managed infrastructures and provides a resilient system that mitigates the risk of overloaded databases, which slow website and application load times. Through integration with Amazon CloudWatch, Amazon ElastiCache provides enhanced visibility into key performance metrics associated with your Memcached or Redis nodes.
Using Amazon ElastiCache, you can add an in-memory caching layer to your infrastructure in a matter of minutes by using the AWS Management Console.
For more information, see the Amazon ElastiCache detail page.
Amazon Redshift is a fast, fully managed, petabyte-scale data warehouse service that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools. You can start small for just $0.25 per hour with no commitments or upfront costs and scale to a petabyte or more for $1,000 per terabyte per year, less than a tenth of most other data warehousing solutions.
Amazon Redshift delivers fast query performance by using columnar storage technology to improve I/O efficiency and parallelizing queries across multiple nodes. Redshift uses standard PostgreSQL JDBC and ODBC drivers, allowing you to use a wide range of familiar SQL clients. Data load speed scales linearly with cluster size, with integrations to Amazon S3, Amazon DynamoDB, Amazon Elastic MapReduce, Amazon Kinesis or any SSH-enabled host.
We've automated most of the common administrative tasks associated with provisioning, configuring and monitoring a data warehouse. Backups to Amazon S3 are continuous, incremental and automatic. Restores are fast; you can start querying in minutes while your data is spooled down in the background. Security is built-in. You can encrypt data at rest and in transit using hardware-accelerated AES-256 and SSL, isolate your clusters using Amazon VPC and even manage your keys using hardware security modules (HSMs).
We recommend Amazon Redshift for customers who have a combination of needs, such as:
- High performance at scale as data and query complexity grows
- Desire to prevent reporting and analytic processing from interfering with the performance of OLTP workloads
- Large volumes of structured data to persist and query using standard SQL and existing BI tools
- Desire to the administrative burden of running one's own data warehouse and dealing with setup, durability, monitoring, scaling and patching
For more information, see the Amazon Redshift detail page.
Developers may use a number of leading relational databases on Amazon EC2. An Amazon EC2 instance can be used to run a database, and the data can be stored within an Amazon EBS volume. Amazon EBS is a fast and reliable persistent storage feature of Amazon EC2. With Amazon EC2 Relational Database AMIs, developers avoid the friction of infrastructure provisioning while gaining access to a variety of standard database engines. Amazon EC2 Relational Database AMIs enable developers to skip the infrastructure and hardware provisioning typically associated with installing a new database server, while still enabling them to exert complete control over the administrative and tuning tasks associated with running a database server.
We recommend Amazon EC2 Relational Database AMIs for customers who:
- Wish to select from a wide variety of database engines
- Want to exert complete administrative control over their database server
Installing Relational Databases via AMIs
An Amazon Machine Image (AMI) is an encrypted machine image stored in Amazon S3. It contains all the information necessary to boot instances of your software. Many existing AMIs already come packaged with relational databases. Learn more about AMIs and the AWS Marketplace.
Please visit our page on Running NoSQL Databases on AWS if you are interested in learning about the full breadth of NoSQL database options available on AWS.
Users who choose to employ Amazon EC2 Relational Database AMIs will use Amazon EBS to host the data for their database servers. Amazon EBS provides the ability to save snapshots to Amazon Simple Storage Service (Amazon S3). These backup snapshots should be performed in the same fashion as traditional systems, using either job schedulers or graphical agents. Amazon S3 provides durable storage that is automatically replicated to multiple locations.
Amazon RDS users can take advantage of an automatic backup facility that enables them to select the frequency at which backup snapshots are taken and a desired retention period (in number of days). Amazon RDS provides free backup storage up to the size of the provisioned database. Amazon RDS will automatically back up database and transaction logs, and enable restoration to any point within the retention period, up to the last five minutes. Users can also restore to any user-initiated backup snapshots they may have created.
Amazon DynamoDB is highly available, with automatic and synchronous data replication across three facilities in a Region. This helps protect your data against individual machine, or even facility level failures. Amazon DynamoDB data can be exported to Amazon S3, which is designed for 99.999999999% durability, or to DynamoDB in a different AWS region.
The first step in securing a database is to follow the security guidelines specific for that database, paying special attention to access control. Please consult the documentation specific to your database of choice on the vendor’s/project’s website.
If you’re using Amazon EC2 and EBS for your database, you should also use the Amazon EC2 distributed firewall to limit access to your database. You can use group access rules to assure that only your instances have access to your database.
For a complete overview of AWS security, including security of Amazon DynamoDB and Amazon RDS, consult the Overview of Security Processes whitepaper.