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, or PostgreSQL database engines, scale compute & storage, Multi-AZ availability 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.|
|A NoSQL database service for smaller datasets||Amazon SimpleDB, a fully managed service that provides a schemaless database, reliability and more.|
|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
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 uses a table based data model that 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 primary keys to access their data and don’t need complex query capabilities like transactions or joins
- Don’t want the administrative burden of running their own highly available distributed database cluster
For more information, see the Amazon DynamoDB detail page.
For database implementations with dataset sizes under 10Gb, that do not require a relational model, and that principally demand index and query capabilities, Amazon SimpleDB eliminates the administrative overhead of running a highly-available production database, and is unbound by the strict requirements of a RDBMS.
With Amazon SimpleDB, you store and query data items via simple web services requests, and Amazon SimpleDB does the rest. In addition to handling infrastructure provisioning, software installation and maintenance, Amazon SimpleDB automatically indexes your data, creates geo-redundant replicas of the data to ensure high availability, and performs database tuning on customers’ behalf. Finally, Amazon SimpleDB doesn’t enforce a rigid schema for data. This gives customers flexibility – if their business changes, they can easily reflect these changes in Amazon SimpleDB without any schema updates or changes to the database code.
Amazon SimpleDB is not a relational database, and does not offer some features needed in certain applications, e.g. complex transactions or joins. In addition, a single domain in SimpleDB has a size limit of 10Gb. Although you can split your dataset across multiple SimpleDB domains, Amazon DynamoDB may be a better choice for customers with large workloads.
We recommend Amazon SimpleDB for customers who:
- Principally utilize index and query functions rather than more complex relational database functions
- Have datasets less than 10Gb in size and do not expect to grow beyond this limit
- Don’t need to provision throughput capacity
For more information please refer to the Amazon SimpleDB 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. To see a full listing of machine images, check the AMI summary page.
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 SimpleDB users get the peace of mind provided by automated, geographically diverse replication. All Amazon SimpleDB data is synchronously copied to multiple nodes within different data centers to prevent any data loss in the event of a hardware failure or network disruption. In addition, a number of backup tools have been developed by the Amazon SimpleDB ecosystem, offering simple backups of domain data to Amazon S3.
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 SimpleDB and Amazon RDS, consult the Overview of Security Processes whitepaper.
|Running MySQL on Amazon EC2 with Elastic Block Store||Using Amazon Elastic Block Store (EBS) as a persistent storage mechanism for a production MySQL database server, including snapshot backup and restore.|
|Case Study: Dream Factory||Using Amazon Elastic Block Store (EBS) as a persistent storage mechanism for a production MySQL database server, including snapshot backup and restore.|
|Case Study: Alexa||Alexa chose Amazon SimpleDB over MySQL to store intermediate status/log data and Amazon S3 retrieves input datasets and stores output datasets.|