Before Cloud providers and managed services, databases had to be installed locally and a large scale installation could involve installing a lot of infrastructure and keeping several DBAs. With the advent of Cloud providers, local databases have migrated to the Cloud and local infrastructure requirements have been reduced if not eliminated. Cloud providers such as Amazon Web Services (AWS) and Oracle Cloud Platform provide managed services for commonly used relational database systems Oracle Database and MySQL database, which are ranked 1 and 2 respectively by DBEngines.com. AWS also supports other databases, including PostgreSQL database and SQL Server database. AWS provides support for a proprietary NoSQL database called DynamoDB.
In this article, we shall discuss the databases available on the AWS and Oracle Cloud Platform cloud providers. Regardless of which Cloud provider is used, some features are common to all Cloud provider databases: managed service, scalable, reliable, secure, and collaboration features. This article has the following sections and sub-sections:
- Databases on Amazon Web Services (AWS)
- Databases on Oracle Cloud Platform
- Oracle Database
- MySQL Database
- Oracle NoSQL Database
Databases on Amazon Web Services (AWS)
Amazon Web Services (AWS) provides managed services in different categories:
- Relational Database Service (RDS) for relational databases
- DynamoDB for NoSQL databases
- Redshift for analytical query-based databases (data warehouse)
- ElasticCache for in-memory cache
The Relational Database Service is a Cloud-hosted managed service for the commonly used relational databases—Oracle database, MySQL database, SQL Server, PostgreSQL, MariaDB and the proprietary Aurora—as shown in Figure 1.
Figure 1: Databases hosted on the RDS
What makes RDS a better alternative to local databases is that RDS provides variable capacity, automation of the DBA tasks, hardware provisioned on the Cloud, and automatic database backups and patching. RDS databases provide both Production and Development/Test environments. RDS databases are fully integrated with the other AWS services, such as S3, IAM, CloudWatch, Database Migration Service, and CloudTrail. S3 is used for storage of backups and snapshots, which are used in backing up and restoring a database. IAM is for access management. CloudWatch is for monitoring and logging. CloudTrail is for auditing API calls. Database Migration Service is for migrating databases: migrating a local database to the Cloud or migrating between different databases in the Cloud. RDS provides the option to deploy a database on Multiple Availability Zones.
The different editions of the commercial databases Oracle and SQL Server are available on RDS. Aurora is a high-performance database that is fully compatible with MySQL and PostgreSQL databases and provides the following benefits:
- High throughput (5x MySQL and 3x PostgreSQL)
- Auto-scaling SSD Storage (up to 64 TB) that is fault-tolerant
- Multiple Read Replicas for Low Latency and Auto Failover
- Fault tolerant. Disk failures are repaired without loss of service.
- High Availability
- Incremental Backups and point-in-time recovery
- Network isolation (VPC), resource-level permissions using IAM, and encryption to make the databases secure
RDS databases provide an Endpoint, such as for PostgreSQL database on RDS shown in Figure 2, for access with commonly used SQL clients.
Figure 2: PostgreSQL Database on RDS
DynamoDB is a flexible data model NoSQL database that provides low latency (single digit millisecond), auto-scaling of read and write capacity with the provision to get reserved capacity, global secondary indexes for efficient query over any field (attribute) in a table, and integration with CloudWatch for monitoring and logging. If response-time is relatively higher, which implies in microseconds, the DynamoDB Accelerator (DAX) service is available to reduce the response time for eventually consistent data. A DynamoDB table is shown in Figure 3.
Figure 3: DynamoDB Table
Redshift is a database (data warehouse) for OLAP (online analytical processing) of petabyte-scale structured data stored in local disks using SQL standards with the provision to extend querying to exabyte scale unstructured data stored in S3 using Redshift Spectrum. Open data formats such as CSV, TSV, Parquet, Sequence, and RCFile may be used with Redshift Spectrum. Redshift offers the same managed service features as for most AWS services such as scalability, fault tolerance, automated backups, encryption, integration for monitoring and logging with CloudWatch, and network isolation with VPC. Redshift provides custom ODBC and JDBC drivers in addition to standard PostgreSQL ODBC and JDBC drivers for access using commonly used SQL clients. A Redshift cluster may be accessed at a provisioned Endpoint, shown for a Redshift cluster in Figure 4.
Figure 4: Redshift Cluster
Amazon ElasticCache is a distributed in-memory cache in the Cloud. Two cluster engine options are available for an ElasticCache cluster, ElasticCache for Redis, and Memcached. ElasticCache for Redis is an in-memory data structure store which may be used as a database, cache, and message broker. Memcache is a high-performance, distributed memory object cache designed to make dynamic Web applications faster. Several node type options designed for a cache are available, as shown in Figure 5.
Figure 5: Cache Node Types
Reserved nodes are available for an ElasticCache. Automated backups and SNS notification are available with ElasticCache. ElasticCache memcached cluster clients are available for different languages: .NET, Java, and PHP. The PHP client is available for several PHP versions ranging from PHP 5.3 to PHP 7.0. A ElasticCache database is shown in Figure 6.
Figure 6: Redis ElasticCache
Databases on Oracle Cloud Platform
Oracle Cloud Services Platform includes the Oracle Database Cloud Service for Oracle Database and the Oracle MySQL Cloud Service for MySQL database. The Oracle Cloud Services are grouped into different categories just as the AWS services are. However, the Oracle Database Cloud Service is for the databases the Oracle IaaS Cloud Services are for the infrastructure required to run the databases on the cloud.
Oracle Database on the Cloud is available in more editions than a standalone database, as shown in Figure 7.
Figure 7: Oracle Database on Cloud Editions
To create Oracle Database on the Cloud, click Create Service in the Oracle Database Cloud Service dashboard, as shown in Figure 8.
Figure 8: Creating a Oracle Database Cloud Service
Supported database editions are 11g R2, 12c R1, and 12c R2, as shown in Figure 9.
Figure 9: Oracle Database editions
If 12c is used, a Pluggable Database is created by default, for which a PDB Name must be configured (see Figure 10). For Backup and Recovery, options available are: Disk, Cloud, Disk & Cloud, and None.
Figure 10: Configuring an Oracle Database 12c Service including a PDB
An Oracle Database Cloud service is shown in the dashboard in Figure 11.
Figure 11: Oracle Database Cloud Service
A Public IP gets created for Oracle Database, as shown in Figure 12.
Figure 12: Public IP for Oracle Database Cloud Service
The database resources include the OCPUs, memory, and Storage, which also are listed in Figure 12. The OCPUs, memory, and storage are not individually configurable but a compute shape with pre-selected settings for the resources must be selected. A database may be scaled up or down, as shown by the Scale Up/Down option in Figure 13.
Figure 13: Scale Up/Down
A compute shape may be selected in the Scale Up/Down dialog, as shown in Figure 14.
Figure 14: Selecting a Compute Shape
Monitoring metrics are available for a database service, as shown in Figure 15.
Figure 15: Monitoring Metrics
Creating a MySQL Database service on Oracle Cloud is similar to creating an Oracle Database service. MySQL database configuration settings that are required to be provided include a service name (as shown in Figure 16), a Compute shape, usable database storage (GB), administration user (root by default), administration password, database schema name, and Backup and Recovery Configuration.
Figure 16: Creating a MySQL Database Service
A Connect descriptor and a Public IP for a MySQL Database service get created, as shown in Figure 17.
Figure 17: MySQL Database service in Oracle Cloud
Oracle NoSQL Database
Oracle Cloud Service shall also provide a managed service for Oracle NoSQL database, the main features of which include high availability, transactions, parallel queries, low latency data storage and query, and API support for several client languages including C, Java, and Node. Oracle NoSQL on the Cloud provides a flexible data model with support for Key-Value, Tables, and JSON for storage. Oracle NoSQL Cloud service provides dynamic application schema and is highly performant using value based indexing, which indexes simple and complex types (Maps and Arrays) for efficient query results, and consistent indexes, which are shared local indexes. Administration of Oracle NoSQL on the Cloud is simplified using automated load balancing for efficient data access across a cluster. Cluster management includes scaling and rolling upgrades. Oracle NoSQL Database Cloud Service is "Coming Soon."
In this article, we explored the database services provided by AWS and Oracle Cloud Platform. The databases on AWS and Oracle Cloud are managed services with features that are not feasible in a relatively small-scale local database service.