Just when you thought that you understood the term Web 2.0, along comes this Cloud thing. Do you know what that's all about? Do you care? What does that have to do with your MySQL database?
Let me try to help you answer these questions. SaaS's little brother has arrived and his name is DBaaS. Whether you're a small business owner or a database administrator for a large multi-national corporation, it is to your advantage to get to know whether or not DBaaS is something that you want to explore further. Read on and see what all the fuss is about.
The Emergence of Cloud Computing
If you consider "the Cloud" to be another name for the World Wide Web, then any service or product that is located outside of your firewall could be considered to be "in the cloud." It's actually a little dificult to pin down exactly, as cloud computing is still in its infancy. I can say at this time is that it definitely involves purchased hosting, just like most all Internet resources are really. In terms of the Cloud, hosting may incorporate a wide array of resources and services that go well beyond traditional content storage.
One of the most prolific is Software as a Service, or SaaS for short. That's where an application is delivered through the browser to thousands of customers. A variation on SaaS is the delivering of development environments as a service, called Platform as a Service (PaaS). It allows you to build your own applications that run on the provider's infrastructure and are delivered to your users via the Internet from the provider's servers.
MySQL Moves to the Cloud
The service that interests us database personnel is called Database as a Service, or DBaaS for short. In a DBaaS, the database tier in the backend is being overseen by a management layer that's responsible for monitoring and configuring the database to achieve optimized scaling, high availability, multi-tenancy and effective resource allocation in the cloud. In a DBaaS solution, the developer is spared much of the hassles of the tedious ongoing DB management tasks and operations, as those are automatically handled by the service itself.
Cloud applications commonly connect to a database that is also being run on the cloud. It can take the form of a manually configured database, like MySQL on an Amazon EC2 instance, preconfigured MySQL like Amazon RDS, or a native cloud Database-as-a-Service like Xeround's MySQL Cloud database. What we've seen is that native cloud databases are better equipped to optimally use cloud resources and to guarantee availability and stability, compared to "patched" software being adopted for cloud use.
When choosing a data solution for the cloud, you need to asses your needs and the nature of the underlying service you seek. Do you only require a simple remote storage and data retrieval, or do your applications require more extensive database operations? You should also consider your applications' growth potential and future usage patterns, if known.
Advantages of using a Cloud database include:
- Fast automated recovery from failures
- Either built-in to a larger package with nothing to configure, or comes with a straightforward GUI-based configuration
- Managed backups, restores, and automated scheduling
- Does not require any operating system knowledge
- Automated on-the-go scaling with the ability to simply define the scaling rules or manually adjust
- Potentially lower cost
- Device independence
- Better performance
- Automatic failover/high availability
- Widely accessible
- Minimal outlay investment; you can always buy your own server later.
- You can provision a few servers in the cloud immediately, don't have to wait a few days for shipping, don't have to spend time setting up the environment
- Excellent choice for those with space considerations
- May be able to pay little or nothing for unused time
Some of the disadvantages include:
- Security and privacy issues
- Requires a constant Internet connection (bandwidth costs!)
- Loss of control over resources: e.g., can you delete the data?
- Data ownership: Who owns the data? Where is it? Who will accept the risk for compromised data?
- Data is tied to the provider
- Requires staff that has specialized skill set
- No proven track record yet
Choices and More Choices
Even at this early stage of the game, or maybe because it's still early, we're seeing a plethora of DBaaS solutions. And I'm not just talking about vendors.
NoSQL, Native, or Hybrid
Options for running Relational Database Management Systems (RDBMSs) in the Cloud can be broken down into three distinct models:
- Install and Manage: in this "traditional" model the developer or administrator selects their database, creates an instance in their cloud, installs it, and is then responsible for all administration tasks. This is also known as the Do-it-Yourself (DIY) model.
- Cloud-Managed DBaaS Instance: in this model, the cloud provider offers a DBMS service that developers just use. All physical administration are performed by the cloud provider and the developer just needs to worry about structural tuning issues such as indices, tables, query optimization, etc.
- External Cloud-Agnostic DBaaS Solution: this solution typically uses NoSQL Databases, which are administered using a Web interface. Theoretically, it should provide you a high degree of cloud-independence (depending on your provider), as well as multi-cloud availability and continuous operations in the event of a cloud failure.
Amazon EC2 is an example of a fully virtual DBaaS service.
You can retain access to the full capabilities of your familiar MySQL database in the Cloud if you wish. The host would take care of automatic backs ups, storing the backups for a customizable retention period and enabling point-in-time recovery. You benefit from the flexibility of being able to scale the compute resources or storage capacity associated with your relational database instance via a single API call. In addition, this setup makes it easy to use replication to enhance availability and reliability for production databases and to scale out beyond the capacity of a single database deployment for heavy traffic.
Examples include Amazon RDS and Xeround MySQL.
There are also some viable open source solutions that you may want to consider, including Drizzle and OpenStack. These tend to be cheaper and more dynamic.
There's no question that DBaaS is really gaining traction, but don't let that sway you into making a hasty decision. Do your homework, read up on what's out there and only take action when you've weighed all the different options. There are some businesses, like the one where I work, that will not be moving their data or databases off-site for some time. In those cases, the sensitivity of the data trumps all other considerations.
See all articles by Rob Gravelle