RethinkDB 1.10: multi-indexes and serialization improvements

We are happy to announce RethinkDB 1.10 (Von Ryan’s Express). Download it now!

This release lets you index a row by multiple values at once, which can make entire classes of queries much faster (see below). It also includes major improvements to the way we serialize small values, which should increase the performance of many disk/network-bound workloads.

Take a look at the full list of improvements, or watch Daniel Mewes (@danielmewes), an engineer at RethinkDB, talk about the 1.10 release in this two-minute video:

Upgrading to RethinkDB 1.10? Make sure to migrate your data before upgrading to RethinkDB 1.10.

Multi-indexes

Prior to RethinkDB 1.10, there was no way to index a single document by multiple values. This made certain workloads incurably slow. For example, if you had a table of GitHub issues with a field tags:

{
  ...,
  "tags": ["feature", "ReQL", "secondary_indexes"],
  ...
}

There was no fast way to retrieve all the github issues with the tag feature. Now, you can create a multi-index to do exactly that:

r.table('github_issues').index_create('tags', multi=True).run(conn)
r.table('github_isses').get_all('feature', index='tags')

Want to start using multi-indexes right away? Head to our API page.

Serialization improvements

We’ve made several improvements to the way we serialize values, especially small values. For example, RethinkDB stores all numbers as doubles internally, and previously we would serialize a full double to disk every time we wrote a number. Now, in the (common) case where documents contain small integers, we use a variable-length integer encoding instead. After lots of small improvements in this vein (which you can find in the release notes), we’re seeing up to 30% improvements in the serialized size of previously problematic JSON documents.

Getting to an LTS release

We’re still hard at work on our first LTS release, due (hopefully) near the end of the year. In pursuit of that, our next few releases will continue to focus on performance and stability.

As previously mentioned, here is how the LTS release will be different from the beta releases we’ve been shipping until now:

  • It will go through a longer QA process that will include rigorous automated and manual testing
  • All known high impact bugs and performance issues will be solved
  • We’ll publish results of our tests on high demand, large scale workloads in a clustered environment
  • The LTS release will have an additional margin of safety since it will first be battle tested by our pilot customers
  • We will be offering commercial support, training, and consulting options

If you have feedback or questions about this process, we’d love to hear from you!

Get a free RethinkDB T-shirt

We’d love to hear what you’ve built with RethinkDB, so we’re handing out shirts for stories. Tell us how you’re using RethinkDB, and we’ll send you a swanky RethinkDB T-shirts (American Apparel 50/50, super soft, super awesome).