The OpenStack Trove Database-as-a-Service (DBaaS) project has come a long way since incubation in Grizzly and Havana, and integration in the Icehouse release in April 2014. At that time, it supported single instances of MongoDB, MySQL and a few other databases. Today, Trove supports Cassandra, Couchbase, CouchDB, DataStax Enterprise, DB2 Express, MariaDB, MongoDB, MySQL Percona, Percona XtraDB Cluster, Redis, and Vertica.
An important aspect of Trove is the ability to manage the complete lifecycle of a database with capabilities that fall into the following three broad groups.
The first is support for high availability and scalability. This is vital to the successful deployment of Trove in support of business critical production applications. Trove now supports high availability and scalability through replication and clustering for a number of databases. The Mitaka release, scheduled on April 7th, adds support for clustering in Cassandra, and MariaDB, the ability to grow and shrink MongoDB, Percona XtraDB clusters, Vertica, and as well as GTID-based replication for MariaDB.
The second is support for backup and restore which are essential capabilities for databases, and the Mitaka release adds support for backup and restore for Cassandra, CouchDB and DB2 databases.
The third is the ability to manage the configuration of database instances, along with users and databases that are defined on those instances. The Mitaka release fills out the capabilities of Trove by adding support for configuration groups in Cassandra and Vertica, as well as user and database functions for Cassandra and CouchDB.
Maturation and Emerging Requirements
Trove can now support databases for a variety of use cases from prototyping and development, testing and QA, and production operation.
We are seeing production deployments of databases that require additional capabilities on the guest instance like support for licensing. In response to that requirement, Trove in the Mitaka release includes a new capability called Module Management. When Trove is deployed, now a set of files (generically referred to as modules) is defined that must be deposited on the guest instance on launch. This capability was built with the immediate desire to deposit license files on guest instances at run time, eliminating the need to install license files on guest database images.
Integration with OpenStack Ceilometer (data collection) was improved with a number of new events being generated in Trove for common operations that enable fine-grained billing activities.
Looking Beyond Mitaka, What is Ahead
At the mid-cycle review meeting in Raleigh last February, the team also took a hard look at new capabilities for the next Newton release.
We are looking to make improvements to Trove that include adding new databases, as well as additional capabilities for existing databases. For example, I believe we should focus efforts on adding HBase, a commonly used Big Data database, which would be a meaningful complement to Vertica that is already supported by Trove.
In addition, we want to simplify deploying and using Trove. Specifically, there are efforts under way to: make it easier for users to construct guest images; improve the command line interface; provide some much needed management commands through the CLI (command line interface) and move to using the OpenStack CLI; simplify the process for upgrading database instances.
We will continue to invest time and resources in delivering capabilities that will enable users to operate Trove in highly available and scalable OpenStack architectures. We will be undertaking a variety of projects that aim to pay down some of that technical debt that we incurred as we rapidly evolved Trove. In the Newton release, we will also complete the changes required to support Python v3, an effort that is being undertaken by all OpenStack projects.
We’re also considering projects that would improve Trove’s support for additional persistent storage technologies. In particular, we are considering adding support for OpenStack Manila but this is a project that will require additional design and considerations.
Last, but not the least, I personally intend to spend a lot of my time on growing and strengthening the Trove community. This includes efforts to encourage active participation by new contributors to the project, and working with users and deployers to understand their needs.