Amazon RDS
Amazon RDS is the Relational Database Service offered as a web service by
Amazon. It makes it easy to set-up and operate a relational database in the
cloud.
It provides a very cost-effective way to use industry’s leading RDBMS software
as a managed service. Because of this web service from amazon AWS, You do
not have to buy any server or install any database software in it.
You just have subscribed to the AWS RDS web service and start using the
RDBMS features after some initial configuration involving memory and CPU
capacity allocation etc.
As RDS is a managed service provided by AWS, we can expect that like other
AWS services it will provide scalability, security and cost effectiveness to the
various RDBMS it provides.
The database products available through AWS RDS are as listed below.
SQL Server
    SQL Server is a Relational Database developed by Microsoft.
    SQL Server is easy to set up, operate, and scale the SQL Server
     deployments in the cloud.
    With the help of Amazon RDS, you can add multiple editions of SQL
     Server such as 2008 R2, 2012, 2014, 2016, 2017 in minutes with cost-
     effective and re-sizable compute capacity.
    It frees you from managing the time-consuming database administration
     tasks such as provisioning, backups, software
    patching, monitoring, and hardware scaling.
    It supports "License-included" licensing model. In this model, you do not
     have to purchase the Microsoft SQL Server licenses separately.
    Amazon RDS provides high availability of MS SQL Server using multi-
     availability zone capability, and this reduces the risk to set and maintain
     the database manually.
    It manages the provisioning of the database, version upgrades of MS SQL
     Server and disk storage management.
Some of the limitations are associated with the SQL Server:
    Each of the MS SQL Server instances has the availability of up to 30
     databases.
    Amazon RDS does not support other MS SQL Server services such as SQL
     Server Analysis Services (SSAS), SQL Server Integration Services (SSIS),
     SQL Server Reporting Services (SSRS), Data Quality Services (DQS) or
     Master Data Services (MDS) on the same server as Amazon RDS MS SQL
     Server DB instance.
    The maximum storage size for MS SQL Server Database Instance is 16 TB
     for General purpose SSD storage.
Oracle
      It is a very popular relational database.
      It is used by big enterprises but can be used by other businesses as well.
      Oracle is a Relational Database Management developed by Oracle.
      It is easy to set up, operate, and scale Oracle deployment in the cloud.
      You can deploy multiple editions of Oracle in minutes with cost-effective
       and re-sizable hardware capacity.
    Amazon RDS frees you from managing the time-consuming database
     administration tasks. You need to focus on the development part.
    You can run Oracle under two different licensing models, i.e., "License
     Included" and "Bring-Your-Own-License".
Where,
License Included Model: In this model, you do not need to purchase the Oracle
license separately, i.e., Oracle Database software has been licensed by AWS
only. The pricing starts at $0.04 per hour.
Bring-Your-Own-License (BYOL): If you own Oracle Database License, then you
can use the BYOL model to run Oracle database on Amazon RDS. The pricing
starts at $0.025 per hour. This model is used by those customers who already
have an existing Oracle license or purchase the new license to run the Oracle
database on Amazon RDS.
MySQL Server
    It is an open source relational database.
    It is free to download and use.
    It is very popular in the developer community.
    It is easy to set up, operate, and scale MySQL deployments in aws.
    You can deploy MySQL Servers in minutes with cost-effective and
     resizable hardware capacity.
    It frees you from managing the time-consuming database administrative
     tasks such as backups, monitoring, scaling and replication.
    An Amazon RDS supports MySQL versions such as 5.5, 5.6, 5.7, 5.8, and
     8.0 which means that the code, applications, and tools that you are using
     today can also be used with Amazon RDS.
PostgreSQL
    It is an open source Relational database for enterprise developers and
     start-ups.
    It is easy to set up, operate, and scale PostgreSQL deployments in the
     cloud.
    With Amazon RDS, you can scale PostreSQL deployments in aws cloud in
     minutes with cost-effective and resizable hardware capacity.
    It manages time-consuming administrative tasks such as PostgreSQL
     software installation, storage management, replication for high
     availability, and backups for disaster recovery.
    The code, applications, and tools that we use today can also be used
     with the Amazon RDS.
    With few clicks in AWS Management Console, you can deploy
     PostgreSQL database with automatically configured database parameters
     for on optimal performance.
Aurora
    It is a relational database, and closed source database engine.
    It is compatible with MySQL and delivers five times throughput of MySQL
     on the same hardware.
    It is also compatible with PostgreSQL and delivers three times
     throughput of PostgreSQL on the same hardware.
    Amazon RDS with Aurora manages the time-consuming administrative
     tasks such as software installation, patching, and backups.
    The main features of Aurora are fault-tolerant, distributed, a self-healing
     storage system that auto-scales upto 64 TB per database instance.
    It provides high-performance, availability, point-in-time recovery,
     continuous backed up to S3, and replication across three availability
     zones.
MariaDB
    MariaDB is an open source relational database developed by the
     developers of MySQL.
    It is easy to set up, operate, and scale MariaDB deployments in the aws
     cloud.
    With Amazon RDS, you can deploy MariaDB databases in minutes with
     cost-effective and resizable hardware capacity.
    It frees you from managing the time-consuming administrative tasks
     such as software installation, patching, monitoring, scaling, and backups.
    Amazon RDS supports MariaDB versions such as 10.0, 10.1, 10.2, and
     10.3 means that the code, applications, and tools that you are using
     today can also be used with the Amazon RDS.
Each of these Database software is offered as Software as a Service (SaaS) by
providing following features.
    Customization of CPU capacity, Memory allocation and IOPS (Input
     Output per second) for a database instance.
    Manage software patching, failure and recovery of the RDBMS software
     without any user intervention.
    Allow manual or automated backup of the database using snapshots.
     Restore the database from these snapshots.
    Provide high availability by creating a primary and secondary instance
     which are synchronous. In case of a failure of primary AWS RDS
     automatically fails over to secondary.
    Put the databases in a virtual private cloud (VPC) and aslo use AWS IAM
     (Identity and Access management) service to control access to the
     databases.
    There are two purchase options for AWS RDS service. On-Demand
     Instances and Reserved Instances. For on-Demand instance you pay for
     every hour of usage while for Reserved instance you make a upfront
     payment for one year to three period time frame.
DB Instances
A DB instance is an isolated database environment running in the cloud which
can contain multiple user-created databases. It can be accessed using the same
client tools and applications used to access a standalone database instance. But
there is restriction on how many DB instances of what type you can have for a
single customer account.
Each DB instance is identified by a customer supplied name called DB instance
identifier. It is unique for the customer for a given AWS region.
DB Instance Classes:
Depending on the need of the processing power and memory requirement,
there is a variety of instance classes offered by AWS for the RDS service.
When there is a need of more processing power than memory requirement
you can choose the standard instance class with a higher number of virtual
CPUs. But in the case of very high memory requirement, you can choose
Memory optimized class with appropriate number of VCPUs. Choosing a
correct class not only impacts the speed of the processing but also the cost of
using service. The burstable performance class is needed when you have a
minimal processing requirement and the data size in not in peta bytes.
                         Number of       Memory Range        Bandwidth Range
    Instance Class
                         Vcpu            in GB               in Mbps
    Standard             1 to 64         1.7 to 256          450 to 10000
    Memory Optimized     2 to 128        17.1 to 3904        500 to 14000
    Burstable
                         1 to 8          1 to 32             Low to Moderate
    Performance
.
DB Instance Status:
The DB Instance status indicates the health of the DB. It’s value can be seen
from the AWS console or using AWS CLI command describe-db-instances. The
important status values of DB instances and their meaning is described below
    DB                                                               Is the
    Instance      Meaning                                            Instance
    Status                                                           Billed?
                  The instance is being created. The instance is
    Creating                                                         No
                  inaccessible while it is being created.
    Deleting      The instance is being deleted.                     No
                  The instance has failed and Amazon RDS can't
    Failed                                                           No
                  recover it.
    Available     The instance is healthy and available.             Yes
                                                                     Yes
    Backing-up    The instance is currently being backed up.
DB Storages:
The RDS instances use Amazon Block Storage (EBS) volumes for storing data
and log. These storage types can dynamically increase their size as and when
needed. But based on the database workloads and price associated with these
storage types we can customize the storage need. Following are the factors to
be analysed while deciding on the storage types.
IOPS: It represents the number of Input Output operations performed per
second. Both read and write operations are summed up for finding the IOPS
value. AWS creates a report of IOPS value for every 1 minute. It can have value
from 0 to tens of thousands per second.
Latency: It is the number of milliseconds elapsed between the initiation of an
I/O request and the completion of the I/O request. A bigger latency indicates a
slower performance.
Throughput: The number of bytes transferred to and from the disk every
second. AWS reports the read and write throughput separately for every 1-
minute interval.
Queue Depth: It is the number of I/O requests waiting in the queue before
they can reach the disk. AWS reports the queue depth for every 1-minute
interval. Also a higher queue-depth indicates a slower storage performance.
Based on the above considerations, the aws storage types are as below.
General Purpose SSD
This is a cost-effective storage that is useful in most of the common database
tasks. It can provide 3000 IOPS for a 1- TiB volume. In a 3.34 TiB size the
performance can go up to 10000 IOPS.
I/O Credits
Each GB of storage allows 3 IOPs as a base line performance. Which mean a
100 GB volume can provide 300 IOPs. But there may be scenario when you
need more IOPS. In such scenario you need to use some IO credit balance
which is offered when the storage is initialized. It is 5.4 million IO credits which
can be used when a burstable performance need arises. On the other hand
when you use less IOPS than the baseline performance, you accumulate the
credits which can be used in future requirement of burstable performances.
Below is a equation which shows the relation between burst duration and
Credit balance.
Burst Duration = (credit Balance) / [(burst IOPS) – 3(Storage
size in GB)]
If your DB needs frequent and long duration burstable performance, then the
next storage type will be a better choice.
Provisioned IOPS Storage:
This is a type of storage system that gives sustained higher performance and
consistently low latency which is most suitable for OLTP workloads.
When creating the DB instance, you specify the required IOPS rate and volume
size for such storage. Below is a chart which is used for reference for deciding
about the IOPS and storage needed under provisioned storage.
DB Engine Provisioned IOPS Range Storage Range
MariaDB     1000 to 40000             100 GB to 16 TB
SQL Server 1000 to 32000               20GB to 16 TB
MySQL /
Oracle/
PostgreSQL 1000 to 40000              100GB to 16 TB