October 11, 2016 | Written by: Chris Glew
Categorized: Data Analytics | What's New
Share this post:
When IBM acquired Compose in July 2015, we added many of Compose’s hosted databases to the Bluemix catalogue, but users were still required to visit the Compose website to configure their accounts separately. As of today, Compose’s entire roster of services is now available entirely through the Bluemix catalogue. This means that Bluemix customers can get a seamless experience when deploying Compose-hosted open source databases.
Now you can deploy MongoDB, Redis, Elasticsearch, PostgreSQL, RethinkDB, etcd and RabbitMQ on Bluemix with the click of a button. Each database is deployed into a 3-node cluster automatically and includes high-availability, automatic failover, daily backups (with weekly and monthly snapshots) and auto-scaling. With Compose, you can deploy a production-ready database in minutes.
Don’t put off planning for database scalability
Databases are often the most neglected part of building new applications, especially for small teams or agile teams that have only so much time to spend on configuring and managing their data layers. Many devs will set up a database quickly, connect their app to it, and then manage it only if they have time. The difficulties come when it’s time to scale, or a new query causes slow queries, or there’s an outage and backups need to be restored. By deploying databases on Compose in HA configurations, with automatic backups, and auto-scaling from the get-go, developers can spend less time managing their databases and more time building their apps.
Each Compose-hosted database, with the exception of the in-memory databases, is priced with 102 MB RAM and 1GBs storage. Customers are charged based on storage only. MongoDB, for example, begins at $31 per month and costs an additional $18/GB thereafter. In-memory databases, such as Redis, start with 256MB RAM and scale similarly. Compose’s autoscaling feature automatically increases RAM and storage simultaneously as you add more data so your app always has enough memory and IOPs to support even during unexpected peak usage.
Which Compose-hosted database is right for you?
If you’re new to some of the databases that Compose offers, you might be wondering which ones you should choose for your project. For that, here is a short introduction to each database.
- PostgreSQL: PostgreSQL is currently the only SQL database Compose offers. PostgreSQL can be used for any situation that calls for a relational schema or requires transactions. PostgreSQL is a very mature, robust open source database and scales well for various types of applications. Note that PostgreSQL also provides for “schema-less” data storage through its JSON and JSONB data types.
- MongoDB: MongoDB is one of three document-type databases Compose currently offers (the other two are RethinkDB and Elasticsearch). The documents in MongoDB are expressed in JSON and arranged in collections within the database. If your application requires more speed than a relational database, will operate at the document level, and needs schema flexibility, then MongoDB is a great solution to choose. This flexibility and speed can be taken advantage of during rapid development and prototyping, before a more structured schema is settled on.
- RethinkDB: RethinkDB is also a document store that handles JSON documents, but it’s got some differentiating qualities from MongoDB. One of these is the language developed for use with RethinkDB: ReQL. ReQL is a robust query language that allows you to develop complex queries against your collections and within documents, even allowing for joins across tables (yes, it has the concept of tables).
As the name implies, Elasticsearch is great for search. Elasticsearch is a distributed database built on Apache Lucene, which underlies many web search engines. For documents stored in Elasticsearch, all fields in the documents are automatically indexed so complex queries can be used to retrieve the data. It also provides full-text search that supports auto-complete, contextual search, and multiple languages.
- Redis: Redis is an in-memory key/value store and its claim to fame is its lightning speed. Because of this, it is often used for data caching or even as a buffer while data moves through it to another source. Redis can be used for any application that requires instantaneous data operations, such as a chat application. We also recommend Redis because it’s the perfect companion to use with your other databases to take some of the load off of them and perform frequently-needed operations in-memory.
- etcd (beta): Compose’s other key/value store is actually a distributed cluster configuration management service to help you build your application. At its simplest, etcd, currently in public beta, can be used just to manage the connection configuration information for your various data stores and application layers. etcd uses the RAFT consensus algorithm to assure data consistency in your cluster and also enforces the order in which operations take place in the data so that every node in the cluster arrives at the same result in the same way.
- RabbitMQ (beta): RabbitMQ, also currently in beta on Compose, is an open source distributed asynchronous message broker. It acts kind of like a temporary database for messages to pass through. It routes messages where they need to go and provides a temporary home until they can be picked up. It can be used for any situation where applications, databases, or other services need to communicate to each other asynchronously.
Give Compose-hosted open source databases a try!
Now that we’ve introduced you to Compose-hosted open source databases, it’s time to give them a try. Log-in to your Bluemix account today to deploy one or multiple databases:
Compose in the Bluemix catalog
We will also publish a new blog soon with a more technical deep dive on getting started with Compose on Bluemix.