RethinkDB: Balancing Database Development and Maintenance

RethinkDB has been on my mind a lot lately since listening to a podcast over at and reading about their $8M Series A fund development. I thought it was time to take a closer look at what is going on there.

RethinkDB is the name of the open source project and the company leading development and support of the project. From what I can gather form various sources, RethinkDB, the company, is interested in continuing to provide support for the project and intends to leave the project open source. I happen to like and appreciate that model as I think it had a greater chance of long term success.

I will cut to the chase here. RethinkDB appears to provide the right balance of needs for developers and IT operations in an open source database system. I have noticed that other database system which have been released in the past five years lean towards making development very friendly, but may not provide the tools IT operations folks are looking for in a production database. Often these database systems gain more operations friendly tools later in their development. RethinkDB is attempting to provide a balance of features for developers and IT operations out of the box. Pretty amazing.

For developers, RethinkDB is a NoSQL database system. That is nothing new on its own. There are a number of fine choices in the NoSQL database arena which would satisfy many developers. From a development standpoint, the RethinkDB API provides an fantastic chaining method for running query operations, which they call ReQL. The RethinkDB website provides the following example to filter data from the database: r.table('users').filter(lambda doc: doc['age'] > 29).run(). Yep, that is all there is to it.

The API provides a comprehensive set of ReQL commands, organized neatly into the three officially supported languages; JavaScript, Python, and Ruby. In addition to the officially supported languages, there are quite a few community supported drivers for other languages.

RethinkDB also provides developers with a number table join options. This is something that some other NoSQL databases have not included at this point, requiring joining data in arrays at the application layer. Enjoy!

IT operations also feel at home with RethinkDB's admin toolset. While RethinkDB provides a simple web admin UI at http://HOST:8080 by default, the CLI command rethinkdb provides the necessary tools to setup clusters, shard data, setup failover, and even deploy on AWS. Many of docs related to these operations can be found staring here in the "Learn The Tools" section of the documentation.

The easiest way to get familiar with RethinkDB commands is to install RethinkDB and start with $ rethinkdb admin help. From there you can try out commands and get more detailed help with $ rethinkdb COMMAND help.

Hot backup, restore, import, and export capabilities were included in RethinkDB 1.7. Details can be found here. The Python driver is required for these tools.

While the CLI for RethinkDB provides access to all features and allows scripting of tasks, the web admin UI is a great place to start. The web admin UI allows you to get an overview of the cluster's performance, shard, replicate. and run ReQL commands from the browser.

Being devops minded, I really love the direction RethinkDB is going. It is appears to be very well planned and documented for both developers and IT operations. I encourage you to install RethinkDB and give it a try. Let me know what you think and feel free to share other RethinkDB resources in the comments

Blog Category: