Amazon RDS
Amazon RDS
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.
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?
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