Cloud database is becoming the most adopted technology for storing huge amounts of data by many companies worldwide. According to a recent Gartner report, databases are growing at 68% in the cloud.
Using Cloud-based databases will remove many tasks performed by a database administrator (DBA) in traditional environments where an organization owns its hardware, i.e., on-premises environments. Migrating to the cloud will add new tasks, change some existing ones, and provide a subtly different context for understanding many tasks.
The cloud database holds the data on different data centers located at different locations. This makes the cloud database structure different from the rational database management system. This makes the structure of the cloud database a complex one.
Meanwhile, moving the database to the cloud is not as simple as taking the relational database and deploying it over a cloud server. It is more than that. It means adding additional nodes when required online and increasing the performance of the database.
There is a need to distribute the data over different data centers distributed in different locations. The database must be accessible all the time so that the user can get the data whenever he or she needs it. The cloud database must be easy to manage, and it should reduce costs as well. Cloud computing is very efficient in recovering the information after a disaster in the database.
This post will list some of the specific examples of Cloud-based database systems, including Amazon Relational Database Service (Relational database), Amazon Dynamo DB (NoSQL database), Google Datastore (NoSQL database), and Google Cloud SQL (Relational database).
1. Amazon Relational Database Service
Amazon Relational Database Service (Amazon RDS) is a service from Amazon (among Amazon Web Services) which provides a cloud-based relational database service. Since it supports Oracle and MySQL (two popular relational database systems), many users can easily transfer their existing relational database to the cloud. Amazon provides several types of pre-configured database instances (a dedicated cloud instance to store database, with either MySQL or Oracle database system installed), with sensible parameters to help user launch their database easier.
The database instance can range from a small one (which is comparable to a regular computer) to a high-end one, which could be as powerful as 20-30 regular computers. For instance, a user can select a storage capacity from 5Gb to 1TB, and if a user needs more, they can easily launch more instances. After the user transfers their database to Amazon RDS, Amazon will take care of storing and backing up the data and help a user recover the data if any bad things could happen. Amazon RDS provides metrics about the database instance’s health through Amazon Cloud Watch, just like a normal EC2 instance.
As a Cloud Services, Amazon RDS takes care of the required infrastructure works and allows developers to scale their resources and storage capacity easily to handle more client requests. Developers can also take advantage of some functions that Amazon RDS offers, such as Multi A-Z deployment and Read replicas (for MySQL database), to enhance the availability and scalability of their database.
2. Amazon Dynamo Database
Amazon DynamoDB is a service from Amazon that provides a NoSQL database service with seamless scalability. It allows users to launch a new Amazon DynamoDB database table and scale up or down their request capacity for the table without downtime or performance degradation. Like Amazon RDS and many other cloud services, it also provides monitoring information about resource utilization and performance.
Amazon DynamoDB stores data in a key-value fashion: The database consists of multiple data tables. Each table has multiple items (the rows), and each item has multiple attributes. As a NoSQL Database, Amazon DynamoDB does not have any schema (except the restriction that needs to be a primary key for the table). Each item can have any number of attributes (it doesn’t need to be the same among different items), but the item size needs to be smaller than 64KB. Each attribute, which can be a single value or multi-valued set, is stored as a name-value pair. However, the attribute cannot have a null or empty string value.
Amazon DynamoDB is an evolution from the earlier NoSQL Database service from Amazon (Amazon SimpleDB). It inherits the most prominent feature of SimpleDB: simplicity in database administration. Yet, it brings a lot of improvements from Amazon’s Dynamo technology (a powerful, ultra-scalable NoSQL database system used internally at Amazon).
Amazon takes care of the underlying technology (spread the data and traffic over many servers, use Solid State Drives with very fast performance) to provide high availability and scalability for the database.
3. Google Datastore
Google Datastore (App Engine Datastore) is the main data storage service for Google App Engine applications. It’s a NoSQL database system built on top of Google’s own Big table database structure. As a NoSQL database system, Google Datastore is a schema-less database. It stores data in data objects known as entities. Each entity is categorized into some categories known as its kind (for query purposes). It keeps a key(which is not mutable) to identify itself from other entities of the same kind. Each entity has one or more properties, a named value of some supported data types.
Google Datastore offers two data storage options: High Replication Datastore (HRD), which makes use of Paxos architecture to enhance reliability and availability, and Master/Slave Datastore, which makes use of Master-slave architecture to ensure strong consistency for database operations.
As a Cloud database service, particularly a NoSQL database system, Google Datastore uses a distributed architecture to help increase the scalability of the database system. It can scale easily to large data sets while maintaining good performance.
4. Google Cloud SQL
Google Cloud SQL is a web service from Google that provides relational database service for Applications deployed on Google App Engine. This feature from Google App Engine is currently in the limited preview phase. Google Cloud SQL supports MySQL database, with a feature to import or export from existing MySQL database into and out of the cloud. As Google Cloud SQL is designed to ensure reliability and availability, it supports data replication in different regions.
Currently, Google Cloud SQL only supports Java-based and Python-based applications. To use it, developers need to use JDBC (Java Database Connectivity) to connect to the database if their application is a Java-based application or DB-API if their application is a Python-based application.
Similar to the Amazon Relational Database Service, the underlying database system in Google Cloud SQL is fully managed by Google, so users can be saved from redundant and tiring tasks such as patch management for the database. On top of it, a rich GUI is provided to help users to manage, monitor, and configure their database system easily.