RDS: Relational Database Service
Going NoSQL with DynamoDB
Databases are among the most used applications in the cloud (or anywhere else, for that matter). Managing data is exactly what computers were invented for, so it should come as no surprise that a great deal of attention is focused on the many different Database Management Systems and Data Management tools that are available.
This course will cover AWS's database solutions. It is split in two parts, the first is dedicated to the two most important Database services in the Amazon family: RDS, a relational database supporting DBMS like MySQL, PostgreSQL, Oracle, and MSSQL; and DynamoDB, a powerful NoSQL DBMS adopting the key-value data model. The second part is about the more advanced AWS database systems like Elasticache, RedShift, and SimpleDB.
Who should take this course
For this beginner course, you'll require no special prerequisites. Nevertheless, some experience with Databases and at least a basic knowledge of the related jargon might be helpful. If you are completely new to the cloud, you might benefit from our Introduction to Cloud Computing course. You might also find the AWS general introduction course interesting interesting if you are not yet that familiar with the AWS cloud platform.
If you want to test your knowledge of the basic topics covered by this course, we strongly suggest you take our quiz questions. Another nice follow up to this course is our RDS lab, where you can get your hands dirty with a real RDS instance in the cloud, and Databases on AWS - part 2.
Amazon Relational Database Service or Amazon RDS is a Fully Managed Web Service that makes it easy to set up, operate and scale a Relational Database in the Cloud. It supports the MySQL, Oracle, Microsoft SQL Server and PostgreSQL Database Engines. This means that the code, applications and tools you already use with your existing databases can be used with RDS as well.
Amazon provides and applies patches to the database software and can also take care of backups. The managed backup service enables point-in-time recovery for your database instance. Amazon RDS will back up your data and transaction logs and store both for you on a user-configurable retention period. In addition Amazon RDS makes it easy to use replication to enhance availability and reliability for production workloads.
Using the Multi-AZ deployment option you can run mission-critical workloads with High Availability and built-in automated failover from your previous database to a synchronously replicated secondary database in case of a failure.
Also Amazon RDS provides Provisioned IOPS, a high-performance storage option designed to deliver fast, predictable and consistent performance for I/O-intensive transactional database workloads. You can provision from 1,000 IOPS to 30,000 IOPS per database instance.
Amazon RDS also provides a number of mechanisms to secure your database instances. It includes a web service interface to configure firewall settings that control network access to your database. It also allows you to run your database instances in Amazon VPC and that enables you to isolate your database instances by specifying the IP range you wish to use and connect to your existing IT infrastructure through industry-standard encrypted IPSEC VPN.
Amazon recommends RDS for customers who want to 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 Engine but prefer to offload the infrastructure management and database administration to AWS.
If you want to exploit the Multi-AZ and Read Replica features to achieve enhanced database availability and read scaleability, like the flexibility of being able to scale your database compute and storage resources with an API call and only pay for the infrastructure resources that actually are consumed, the features provided by Amazon RDS depend on the database engine you select.
Amazon RDS DB Instances are pre-configured with an appropriate set of parameters and settings, appropriate for the Database Instance Class you've selected. If you desire additional control, you can achieve it via DB Parameter Groups.
Amazon RDS provides Amazon CloudWatch metrics for your database instance deployments at no additional charge. You can use the AWS management console to view key operational metrics for your database instance deployments including compute, memory, storage capacity utilization, I/O activity and database instance connections.
Database Snapshots are user-initiated backups of your database instance. These full database backups will be stored by Amazon RDS until you explicitly delete them. You can create a new DB Instance from a DB Snapshot whenever you desire. Amazon RDS provides Amazon SNS notifications via email or SMS for your Database Instance Deployment. You can use the AWS management console or the Amazon RDS APIs to subscribe to over 40 different database events associated with your Amazon RDS deployments. Amazon RDS provides two distinct, but complementary replication features.
Multi-AZ deployments and Read Replicas that can be used in conjunction to gain enhanced database availability, protect your latest database updates against unplanned outages and scale beyond the capacity constraints of a single database instance for read-heavy database workloads. Amazon RDS provides you the ability to control the actions that your AWS IAM users and groups can take on specific Amazon RDS resources. In addition you can tag your RDS resources and control the actions that your IAM users and groups can take on groups of resources that have the same tag.
The basic building block of the Amazon RDS is the database instance, an isolated database environment in the Cloud that can contain multiple user-created databases. You can access your database instance by using the same tools and applications that you use with standalone database instances. Nevertheless to create a modified database instance you need to use the Amazon RDS command line interface, the Amazon RDS API or the AWS management console.
Each DB Instance has a network address known as an Endpoint. Your applications connect to the Endpoint exposed by the database instance whenever they need to access the databases created in that database instance.
Each Database Instance runs a Database Engine.
Each Database Engine has its own supported features and each version of a Database Engine may include specific features. Additionally each Database Engine has a set of parameters and a Database Parameter Group that control the behaviour of the databases it manages.
The computation and memory capacity of a Database Instance is determined by its Database Instance Class. You can select the Database Instance that best meets your needs and if your needs change over time you can change the Database Instance Class.
For each Database Instance you can select from 5 GB to 3 TB of associated storage capacity. Database Instance Storage comes in two flavours, Standard and Provisioned IOPS. Standard Storage is allocated an ordinary EBS volumes and connected to your Database Instance. Provisioned IOPS uses optimized EBS volumes and an optimized configuration stack and provides additional dedicated capacity for EBS I/O.
RDS is a service sold with the usual Pay-as-you-go Approach. You are billed according to the Instance Class, Running Time, Amount of Storage Available, I/O Requests Made and Transferred Data during a billing cycle, Storage Available for Backup & Snapshots.
To get started on RDS you need to follow some steps.
AWS recommends that you use AWS IAM instead of using your AWS accounts credentials, so you may want to create and IAM User and then grant it administrative permissions.
Before starting to create your instance, it's quite important to assess your requirements. Let's see some important points. For example, you need to know if your Database Instance is going to be in a Virtual Private Cloud, VPC.
The Security Group Rules you need to apply to a Database Instance depend on whether your DB Instance is in a Default VPC, in a User-defined VPC or an Outside VPC. You will see some of the details about that later on.
If you need failover support on Amazon RDS, you can take advantage of Multi-AZ Deployment. With this feature a standby replica of your DBE Instance will be created in a different AZ of the same region. In case of a problem with your Primary Instance, Amazon RDS performs and automatic failover to the standby.
If you have production workloads you should enable the Multi AZ Deployment. An important question is, what region do you want your database in?
Having the database geographically close to the application Web service it connects to, could reduce Network Latency.
You should of course know your storage requirements and your need with regard to performance, hence choosing between a Standard Storage or Provisioned IOPS Storage that fits the needs of I/O-intensive workloads.
Once you are clear-minded about your requirements you may need to create a Security Group.
Computer Engineer and Cloud Expert