AWS pioneered the concept of managed databases delivered as a metered, shared service. Before the database as a...
service buzzword was coined, AWS delivered SimpleDB and then Relational Database Service, its distributed relational database service in 2009. Later, AWS augmented its database portfolio with DynamoDB, ElastiCache and Redshift.
But because enterprise databases are often highly customized and idiosyncratic, standard AWS database services won't fit every need without some retooling. For these situations, other database as a service (DBaaS) options can fill in the gaps.
Nearly three years ago, a study from 451 Research predicted that DBaaS would be one of the fastest growing database segments -- hitting almost $2 billion in revenue by 2016. The report lists DBaaS as the primary impetus behind enterprise adoption of alternative database technologies like NoSQL. However, Oracle still dominates the enterprise database market and, given its legacy footprint in most IT organizations, will likely be a key requirement for those looking at standalone DBaaS platforms.
But this poses a problem for AWS competitors, as the service already has a rich Oracle feature set. For example, Amazon Relational Database Service (RDS) supports both Oracle 12c and 11g with the ability to provision up to 30,000 IOPS per database instance. RDS also has typical AWS capabilities like automated backup, database snapshots, rapid scaling and multi-zone redundancy.
Alternatives to AWS database services
Amazon RDS uses a common management console, accessed through APIs and standard protocols, billed based on usage and capacity and available in a range of sizes to accommodate various levels of CPU load, system memory and network performance. But there are two issues with RDS.
Because it's an Amazon service, RDS is only available as a shared cloud service -- not a dedicated, private instance. Additionally, it has hard limitations on database size, I/O throughput and low-level administrative control. Even though AWS increased capacity limits last year, standard RDS instances must be smaller than 6 terabytes (TB), while those using provisioned (guaranteed) IOPS top out at 4 TB -- a sizable limit, but one that may be a problem for large enterprises.
Furthermore, RDS doesn't allow root or SYSDBA access or support Oracle Real Application Clusters.
Other DBaaS providers have higher capacity limits and allow somewhat greater customization, but, for ultimate control over a database, DBaaS isn't the best choice. Instead, it might be a better option for AWS users to run Oracle on self-managed Elastic Compute Cloud (EC2) instances using an image available from the AWS Marketplace.
There are a number of DBaaS options available on the market, including managed relational, NoSQL and data warehouse services from Microsoft Azure and Google. Here's a list of some DBaaS alternatives.
IBM Cloudant: A JSON NoSQL database that integrates full text and geospatial indexes and queries from IBM. It targets applications that require a database to handle a massively concurrent mix of low-latency I/O.
Heroku Postgres: A SQL database designed for app developers with features similar to a source code control system, such as the ability to easily fork and clone a database to test new code, replicate and follow, as well as existing database and rollback changes.
mLab: This developer-friendly database provides managed MongoDB on AWS, Azure and Google Cloud. It includes automated provisioning of various database architectures, high availability through automatic failover and auto scaling.
OpenStack Trove: The DBaaS module for OpenStack is available from several vendors; it has been commercialized by Tesora and others. As part of OpenStack, it can be deployed either on a private cloud or as part of an OpenStack-managed service from Rackspace, AgileCLOUD or City Cloud. Trove provides the service interfaces, but not the underlying database; an abstraction layer that allows it to support 13 different database technologies including Cassandra, Couchbase, MariaDB, MongoDB, MySQL, Oracle, PostgreSQL and Redis.
Oracle Cloud: Managed Oracle (11g or 12c) is offered with several deployment options, including dedicated private VMs or multi-tenant public cloud.
Orchestrate DBaaS: Now part of CenturyLink Cloud, this JSON NoSQL database has features similar to IBM Cloudant.
Rackspace Cloud Database: This managed MySQL supports stock MySQL and variants Percona Server and MariaDB. It supports high-availability failover for up to two slaves, managed backup and restore, role-based access controls and container isolation, which Rackspace claims allows a "database to run at near bare-metal speeds, while isolating CPU, memory, network and I/O resources from noisy neighbors."
SAP HANA Cloud Platform: A holistic platform as a service (PaaS) application that includes both SAP HANA (in-memory) and Adaptive Server Enterprise (ASE, formerly Sybase RDBMS).
Salesforce App Cloud Database: The database behind all Salesforce products; it provides the persistence layer for Force.com.
Parsing AWS and third-party databases
AWS customers generally use one or more AWS database services. The decision to use a third-party DBaaS hinges on whether AWS meets enterprise requirements, including service limitations or the service is missing necessary features. Sophisticated Oracle users may want more control, capacity or performance than RDS provides, making Oracle's cloud service a logical option.
An enterprise that is developing applications on another PaaS, such as Microsoft Azure, Google, SAP HANA, Salesforce or OpenStack-CloudFoundry, may want to use a non-AWS DBaaS option. For these companies, it doesn't make sense to design around anything other than the platform's native database services. Keep in mind that you may need to exchange data with AWS database services or enterprise databases; however, all DBaaS options offer rich APIs and support standard access protocols (ODBC/JDBC) to do so. For example, importing data from an external MySQL or MariaDB database into RDS requires administrators to create a copy of the external source data, move it to an EC2 instance and then import it from EC2 to RDS. AWS documentation walks you through the process.
NoSQL database options in AWS
Consider these AWS data migration methods