I finished the database section of the AWS Solutions Architect Associate course a few days ago, and it was by far the most challenging to wrap my head around.
Just to point it out for the record — I am by no means a database guy. I know what they are at a cursory level, but I have no real hands-on experience to speak of with any type of databases.
This will be my attempt to make sense of all the database offerings from AWS.
RDS is one of the managed database offerings from AWS. It's SQL based, so it allows for you to spin up a number of the most popular SQL database engines such as:
Since RDS is a managed database, it takes over a lot of the management tasks of a relational database such as:
Each database is referred to as an instance, and each instance runs a database engine. The database instance is the database environment that exists within the AWS cloud. The instance can be accessed and modified by making use of the AWS Command Line Interface, the Amazon RDS API, or the AWS Management Console.
The Orion Papers from Linux Academy have a number of diagrams that really outline this information well and can be seen below.
There are a handful of constraints and quotas that are imposed on RDS. Instead of listing them all out, AWS has it documented very well.
One of the biggest benefits of using RDS is that it can be deployed using a number of Availability Zones (AZs). This provides an increased amount of availability and durability. When a database is deployed to multiple AZs, the data is synchronously replicated to a standby note in a different AZ.
Some additional benefits of Multi-AZ architecture are:
A diagram from the Orion Papers can be seen below to show this further.
Read replicas are something that I've seen before as an offering in my own environment, but didn't admittedly see the advantage of using at first. They allow for scaling the amount of reads to a database, and in the case of RDS, allow for up to 5x increase in reads. They can exist either in the same region or a different one and also support Multi-AZ architecture. The reads are done at an eventually consistent speed, which is normally seconds, so long as the application in question supports it.
I don't want this post to become unmanageable by writing in detail about all the AWS database offerings. To accomplish this, I'm going to split this post into a few parts so that it doesn't become overwhelming.
Part 2 can be found here.