AWS Relational Databases in Depth

Start course
1h 9m

*** PLEASE NOTE *** This course has been replaced with two new courses: Database Fundamentals for AWS - Part 1 of 2 and Database Fundamentals - Part 2 of 2.


This course will provide you with an introduction to the cloud database services offered by AWS. In this course, we will first explore the fundamentals of cloud databases, outline the cloud databases provided by AWS before exploring how to get started selecting and using the AWS Database Services. 

Intended Audience

This course suits anyone interested in learning more about the database services offered by AWS. 


The course is an introductory level course so there are no specific database skills or experiences required as a pre-requisite. Having a basic understanding of cloud computing will help you gain the most from this course. I recommend completing “What is cloud computing?” first if you are new to cloud computing.

Learning Objectives

On completing this course you will have an understanding of the different types of database services available to you within the AWS cloud platform. You will be able to recognize and explain the various database services offered by AWS, and be able to identify and select which database service might suit a specific use case or requirement.


First, we learn to recognize and explain the basics of a cloud database service. 
We then learn to recognize and explain the differences between non-relational and relational databases before taking a high-level pass over the family of AWS database services available.
We then dive in the Non Relational Databases 
- Amazon DynamoDB
- Amazon Elasticache 
- and Amazon Neptune exploring use cases for when we might want to use a non-relational database service.

Next, we dive into amazon RDS - the AWS Relational Database Service, exploring the database services provided by RDS. We then examine the services and their various use cases in the context of a scenario. 


The Basics - What is a Cloud Database?

Overview of the AWS Database Services

AWS Non Relational Databases
- Amazon DynamoDB
- Amazon Elasticache
- Amazon Neptune

AWS Relational Database Service
- The RDS Service
- MySQL for RDS

- Microsoft SQL Server for RDS
- Oracle for RDS
- MariaDB for RDS
- PostGresSQL for RDS
- Amazon Aurora for RDS



If you have thoughts or suggestions for this course, please contact Cloud Academy at


22-01-2020: Added note about Amazon Elasticache being used as a cache in front of Amazon RDS services


For additional training on the topics covered in this course, please take a look at the following Cloud Academy content:


Working with Amazon DynamoDB

Introduction to the Amazon ElastiCache Service

Amazon Aurora High Availability


Create Your First Amazon RDS Database

Getting Started with Amazon Aurora Database Engine

Introduction to DynamoDB

Configure Amazon DynamoDB triggers with AWS Lambda


- [Instructor] Hello, and welcome back. Now let's explore Amazon RDS, and the relational databases that it supports. Now there is a lot of information on each service, so to make things easy for you, I've distilled that down to the important aspects of each of the RDS services. Amazon RDS is Amazon's managed relational database service. RDS is the core platform for running relational databases on AWS. So before we delve right in, let's just make sure we understand what the benefits of using the RDS service are. Now let's just keep in mind that we don't have to use Amazon RDS to run a relational database service. We could run our own version of a relational database service on an EC2 instance for example. Let's get to know the common services RDS provides across the range of database types that are provided within it. First, there's the ability to scale components. So, one of the key benefits of the RDS service is this ability to scale compute metrics in or out independently. Now this means you can alter the memory, the processor size, the amount of storage, or the IOPS speed, independently of each other. You don't need to go buy a whole new machine if you want to increase an aspect of performance. The second big benefit is the automatic backups and patching. So, RDS provides automatic backups of your database which is on by default. And that simplifies backups and recovery for you. You can set the frequency of backups, and how long archives will be stored for. And you can still create manual snapshots of a database at any time. So along with the backup routine, Amazon RDS also manages the software patching of the database platform. So you can configure when major patches should be applied. Now, the third big benefit of RDS is high availability. Now RDS provides the option to run databases in multiple availability zones within a region, i.e., depending on the type of service that you choose, you can have RDS run a synchronous, or asynchronous version of your database, in a different availability zone. Now how this replication and failover works, is gonna be specific to each type of database, and the multi-AZ deployments for Oracle and Postgres, mySQL and MariaDB instances, use Amazon's failover technology. Whereas, Microsoft SQL Server DB instances use SQL server mirroring. Now the Amazon Aurora instance types copy the data in a DB cluster across multiple availability zones in a single region by default. So regardless of whether the instances in the DB cluster span multiple availability zones, you still have that multi-AZ's support for your storage using Amazon Aurora. 

Okay, so the fourth benefit is the automatic failure detection and recovery. So, along with creating backups and running a failover database for you in another availability zone, Amazon RDS can also manage automatic failure detection and recovery. Okay, let's explore the relational database services that are available in Amazon RDS. So first cab off the rank is MySQL, and MySQl is a very popular database, it suits a wide variety of use cases. In running MySQL on Amazon RDS, that makes a lot of sense, as the server and services are managed for you. You only pay for what you use, and it's easy to import and export schemas from one instance to another, using a tool such as the Amazon database migration service for example. Now, Amazon RDS for MySQL currently supports MySQL community versions 5.5, 5.6, and 5.7. The MySQL database instances are pre-configured with parameters and settings for the server type that you've selected. And while RDS is a managed service, the parameter groups do give you some granular control in fine-tuning of you MySQL database. And there are four instance families you can choose for MySQL: the micro-instances, general purpose, memory optimized, and the burstable. RDS provides two SSD backed storage options for MySQL databases, you got SSD general purpose and SSD provision IOPS. The general purpose storage provides cost-effective storage for small or medium-sized workloads. Whereas, provision IOPS will deliver consistent performance of up to 40,000 IOPS per second. So you can create read replicas of your database and deploy those across more than one availability zone, using the multi-AZ feature of MySQL and RDS. And a real benefit of MySQL and RDS is that you can increase the size of your database storage on the fly, with zero down time. Now, another plus of running MySQL on RDS is the point-in-time restore and snapshot restore features. So if you plan to use this feature, choose the InnoDB storage engine when you provision your MySQL instance. So, while the service is managed, you can still manage and maintain certain aspects of the servers via the API. Okay, next cab off the rank is Microsoft SQL Server, which is the relational database service from Microsoft. And Microsoft SQL Server is available as a pay-as-you-go service in Amazon RDS. So the RDS service includes the license, and the RDS enables you to run multiple editions of SQL server. It supports 2008 R2, 2012, 2014, 2016, and 2017 editions, including Express, Web, Standard, and Enterprise edition licenses. 

So, this is a superb service where you need to stand up a database for a short period of time, like in our claims management scenario. So using the Microsoft SQL service on RDS, the team in our scenario do not need to request to purchase a server or setup server licensing as a CapEx cost. That means the customer management pilot can begin immediately. Okay, so there's two storage types available with Microsoft SQL Server, you've got general purpose SSD and provisioned IOPS SSD. The general purpose SSD storage delivers a consistent baseline of three IOPS per gigabyte, with the ability to burst up to 3000 IOPS. The provision IOPS SSD makes it possible to set the IOPS for your SQL Server DB storage. And with this storage you can do up to 100 gigabytes to 16 terabytes, and for that size-range you can provision from 1000 IOPS to 32,000 IOPS for new SQL Server DB instances. So, if you want to migrate an existing SQL Server database instance to provisioned IOPS storage, you first export your data from the DB instance and import into a new DB instance equipped with provisioned IOPS storage, just FYI. So, the default database size is four terabytes. However, if you use provisioned IOPS SSD, you can create a database up to 16 terabytes, and as a managed service you can select a multi-AZ deployment, and set automatic backups of the database at the frequency you prefer. The transaction log is backed up at five-minute intervals enabling point-in-time recovery to any one given second. And automatic backups can be stored for up to 35 days. You can run manual snapshots of the whole Microsoft SQL Server database, and these will be stored indefinitely. So, as with MySQL you have a choice of instance types. However, a difference to note is that there is less support for micro-instances with Microsoft SQL Server on RDS. So we have general purpose, memory optimized, and burstable. For small to mid-sized implementations, Microsoft SQL Server on RDS is a great solution. If you need to add availability or scalability, or you are looking for interim services while moving or migrating, Microsoft SQL Server on RDS can provide an ideal solution. And if you are running large Enterprise SQL Server clusters, there are some limitations to be aware of with the Microsoft SQL Server version of RDS. So the always-on feature, which is part of 2012 Enterprise edition, replication and database log shipping are not currently supported in Microsoft SQL Server on Amazon RDS. Okay, next cab off the rank is Oracle. And the Oracle database, it's a common platform in corporate environments, and Amazon RDS currently supports multiple Oracle database editions, to help enable customers with existing licensing agreements run Oracle within the AWS environment. So the versions that are supported are BYO Licenses, Standard Edition Two, which is SE2, Standard Edition One, SE1, Standard Edition, SE, and the Enterprise Edition, which is EE. And the licenses that you can use for these are the Standard Edition One and Standard Edition Two. 

Now the Oracle RDS service supports Oracle Database 12c, the Oracle Fusion Middleware, and the Oracle Enterprise Manager, to run in AWS cloud computing environment. So that's most of the family. You can use your own license or rent these services by hour with license included. So this means you can select and run multiple versions of these powerful tools, without the need to pre-purchase license or significantly-sized hardware. Oracle RDS makes it possible to consider shifting Oracle workloads to the AWS infrastructure. And the benefits of running Oracle databases on AWS infrastructure are speed, flexibility, and cost. Oracle RDS automatically patches in the database software and backs up your databases, and you can set how long you want the backups to be kept for which provides you with some flexibility in your point-in-time recovery planning. So the big benefit is you can provision these powerful Oracle compute instances with the click of button in the AWS console. And with a BYO License or the built-in Oracle license where you use it for pay-per-use, this reduces the often significant cost of provisioning an Oracle database machine. So should you want to run a pilot of a new service, or you need to increase the availability, or implement more disaster recovery support in your current environment, Oracle on RDS makes a great option. There's also product suite integrations that can make Oracle on AWS a good choice. So Oracle on RDS is designed to make complex computing easier, so it supports a number of application integrations, such as SAP Business Suite and the Oracle JD Edwards Enterprise One suite, which both run on AWS for Oracle. Also Amazon Redshift is a supportive data-source for Oracle Business Intelligence versions and Which makes it an easy way to have a data warehouse integration and development with your Oracle solution. One limitation to keep in mind with Oracle RDS is that as it is provided as a managed service, you won't have all access to the underlying hardware or operating system that you might be accustomed to. Now, this is only a consideration if you're currently writing logs to local directories or you have code that is dependent on access to the OS for any reason. Okay, next off the cab rank is MariaDB. And MariaDB is the community develop fork of the MySQL relational database management system. And Oracle RDS for the MariaDB supports version 10.1 to 10.2.11. You can create read replicas for MariaDB on RDS, which is great, and as with the other RDS services, MariaDB on RDS enables multi-AZ deployments, automated backups, failover, and recovery. 

Okay, so that brings us to the last two databases supported by Amazon RDS: Postgres and Amazon Aurora. So PostgreSQL is an open-source relational database service, that sits between the cost and scalability of a not only SQL database, and the power of the current family of relational database services available. So Postgres has achieved many certifications, and can be a great choice if you plan or need to achieve any kind of compliance. You can store healthcare-related information in Postgres for RDS for example. And that can include protected health information or PHI, under an executed business associate agreement with AWS. And the Amazon RDS for PostgreSQL also meets Federal Risk and Authorization Management Program security requirements, or FedRAMP. So as an open-source relational database, Postgres presents a really viable relational database service. Using Postgres on Amazon RDS means it is easy to set up Postgres with a multi-AZ support, read replicas, and automatic backups, and you only pay for the services that you use. So by running Postgres on Amazon RDS, you can port and support your existing PostgreSQL databases in a managed, resilient architecture. The AWS database migration service makes it simple to export your schema and data into Amazon RDS. Plus, there's a number of options for converting and migrating from your current proprietary relational database platform to RDS Postgres, using the database migration service schema conversion tool. So Amazon RDS for Postgres currently supports Postgres 9.3, 9.4, 9.5, and 9.6. Okay, so that brings us to Amazon Aurora, the cloud native database from Amazon. It's Amazon's own fork of MySQL which provides significantly faster processing availability as a native MySQL and Postgres compatible relational database service. Amazon Aurora was designed and built from the ground up to be cloud native. So it's a high-performance database service. As such there are speed and availability benefits in choosing the Aurora service in RDS. The first key difference is how Amazon Aurora manages the underlying storage. Amazon Aurora replicates data across three availability zones by default. So when you create an Amazon Aurora instance, the Aurora service also deploys a cloud native database cluster, and the Aurora instances will use this database cluster as the underlying data store. The database cluster spans two or more availability zones by default, with each availability zone having a copy of the database cluster data. And each cluster has one primary instance which performs all of the data modifications to the cluster volume and supports read and write operations. Each cluster also has at least one Aurora replica which supports only read operations. So each Aurora DB cluster can have up to 15 Aurora replicas of the primary instance, amazing. Now this makes the response and recovery time for Amazon Aurora significantly faster and durable on most RDS services. And the multiple Aurora replicas distribute the read workload. And by locating Aurora replicas in separate availability zones, you can increase your database availability while increasing read replica performance. Okay, so that brings us to the end of our relational databases deep dive. In summary, the benefit of using the relational database service is that as a managed service, the infrastructure, management, and backup routines are taken care of for you. Okay, that brings our lecture on the Amazon relational database service to a close.



About the Author
Learning Paths

Andrew is fanatical about helping business teams gain the maximum ROI possible from adopting, using, and optimizing Public Cloud Services. Having built  70+ Cloud Academy courses, Andrew has helped over 50,000 students master cloud computing by sharing the skills and experiences he gained during 20+  years leading digital teams in code and consulting. Before joining Cloud Academy, Andrew worked for AWS and for AWS technology partners Ooyala and Adobe.