
RethinkDB 2.1 is out: high availability - coffeemug
http://rethinkdb.com/blog/2.1-release/
======
williamstein
This is soooo awesome. I started rewriting SageMathCloud to use RethinkDB when
I learned in May about your plans to support high availability. I've been
rewriting everything, doing tests (building from sources, then using the beta
you kindly provided), and finally after months of work, I'm ready to release
the new version of SageMathCloud last night, but RethinkDB 2.1 isn't out yet.
So I'm torn about whether to go with 2.1beta and cross my fingers, or just
wait, or what. And this! Thank you so much. RethinkDB is, for my use, the
first database I've ever actually really loved (and React.js+flux the first
web framework). Here's my client code in case anybody is curious:
[https://github.com/sagemathinc/smc/blob/rethinkdb/salvus/ret...](https://github.com/sagemathinc/smc/blob/rethinkdb/salvus/rethink.coffee)

------
coffeemug
Slava @ RethinkDB here.

I'll be around all day to answer questions about the release (along with a few
other engineers on our team).

We're very excited about this release -- it makes the lives of RethinkDB users
dramatically better because they won't have to wake up anymore in the middle
of the night in case of most hardware failures :) It also took over a year to
build and test, and has been one of the most challenging engineering problems
we ever had to solve.

~~~
balls187
We're seeing serious memory leaks in 2.0.4~trusty.

[http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png...](http://glui.me/?i=uu1gqb3son0sbnn/2015-08-11_at_11.33_AM.png/)

You can see where the memory sets itself during the rethink process restart,
and then it slowly climbs back up to ~3gb, despite no new data being written
to the system (all our RethinkDB data is generated during deploy time).

Any pointers? I'd be happy to provide any diagnostics.

~~~
coffeemug
Thanks for reporting this!

The image doesn't seem to load for me. Would you mind opening a GitHub issue
([https://github.com/rethinkdb/rethinkdb/issues/new](https://github.com/rethinkdb/rethinkdb/issues/new))
with as many details as possible? We need to know a bit more about the
infrastructure/workload to replicate this; once we get the info we'll get to
the bottom of it ASAP.

Also feel free to e-mail me at slava@rethinkdb.com if you need urgent/critical
support.

------
dantiberian
RethinkDB is great and has a lot of great features, however the thing that has
impressed me the most is the way they communicate with the community. They are
incredibly responsive and friendly on GitHub and IRC. It's not uncommon to get
a response to a bug report within an hour or two (not that they have any
obligation to this). They're incredibly nice.

It looks like they try to follow [http://www.defmacro.org/2013/04/03/issue-
etiquette.html](http://www.defmacro.org/2013/04/03/issue-etiquette.html), it'd
be great to see other companies adopt it too.

Thanks folks!

~~~
tracker1
I could not agree with this more.. the development teams are definitely active
with the community via github and irc... I followed along with the support for
geolocation indexes, and was really happy to see that come into play.

It's taken a while to get to this point, but the development to get here has
been methodical and incredibly well managed in terms of getting appropriate
groundwork in place for a feature (like automatic fail-over) instead of just
trying to hack at it or bolt it on the side. For that matter baking solutions
for data streaming into the box, as opposed to less thoughtful options.

------
tracker1
I've said before how I really appreciate the approach the guys at RethinkDB
have taken... With the automatic failover support baked in, this would
definitely be one of my go to solutions. The management/admin interface is
much nicer than any other NoSQL database out there, while offering a lot of
the things that a traditional RDBMS offers.

I'd probably reach for RethinkDB before Postgres or others simply for the
better administrative experience. Especially for small teams or start-ups that
don't have a dedicated DBA role.

For anyone curious, the databases I would most likely reach for, depending on
the situation would be RethinkDB, ElasticSearch and Cassandra. I really do
like MongoDB a lot as well, but RethinkDB offers the features with far less
friction, though the query interface takes a bit of getting used to.

That said, I also like more traditional RDBMS options as well. I _REALLY_ like
what PostreSQL offers, but have no desire to administer such a beast, failover
isn't really baked in, and the best options are only commercially available,
at a significant cost. There are also hosted options for AWS and Azure for
various SQL RDBMS. That said, I find being able to have data structure
hierarchies in collections tends to be a better fit for _MANY_ data needs.

Congratulations to Slava and everyone else at RethinkDB.

------
uberneo
This looks awesome .. great job guys .. Just a question on licenses . Server
is "GNU Affero General Public License v3.0" and drivers are "Apache License
v2.0." , so in simple english does it means that can i use make commercial
products with backend as RethinkDB? these things always confuses me so
apologies if i ask something stupid here ..

~~~
friendnoodle
The AGPL confuses a lot of people on a lot of projects. It's actually really
simple: If you modify the package (RethinkDB itself, in this case), you have
to release your changes. That's it.

~~~
ahachete
That's not precise. If you modify the package _and_ distribute it to your
users, they must have access to the source code (including the changes, which
also become licensed under the same terms). Up to this point, it's the same as
with GPL.

AGPL _also_ enforces code and changes to be distributed to the users if they
directly consume your database over the network. This would be the case, for
example, of a database-as-a-service.

Put it simply: you use an AGPL database, internally, even for your SaaS:
you're fine. You either modify RethinkDB and ship it as a product or you
provide a RethinkDB or RethinkDB-derived database-as-a-service, then you have
to also provide source code to your users.

------
akbar501
@coffeemug, do you have an ETA on when performance benchmarks will be
released?

~~~
coffeemug
This is totally my fault. I've had a pretty comprehensive benchmark report pdf
sitting in my inbox for a few months now that the performance team put
together, but something else always took my attention away. I'll ask the
documentation team to format it and add it to the official documentation.
Sorry this slipped through the cracks.

~~~
GordyMD
Really looking forward to seeing this.

------
uberneo
Great documentation with some useful examples and tutorials to get you
started. I just tried it and very impressed with the performance and ease of
use , especially the admin section is very handy. Need to try it with cluster
, any docs/videos on creating the cluster with different machines across the
globe?

~~~
coffeemug
Check out [http://rethinkdb.com/docs/sharding-and-
replication/](http://rethinkdb.com/docs/sharding-and-replication/) \-- lots of
information there.

------
mateuszf
As a heavy Heroku user - I'm wondering - is there some hosted RethinkDB
solution?

~~~
sam-mueller
Utilizing rethinkdb on compose.io with heroku does take some hackery, mainly
around deploying to the same colo (amzn us-east-1), and then using heroku env
variables to store your ssh key that will be used to connect your api/svc to
compose box. See this article for more info:
[https://www.compose.io/articles/tunneling-from-heroku-to-
com...](https://www.compose.io/articles/tunneling-from-heroku-to-compose-
rethinkdb/)

I was never able to get the referenced python script working, but using a
shell script inside `.profile.d` did the trick.

------
juijasmem
Can I ask please why you don't provide ready to use, fine tunned amazon
images? This is preventing me to use it now as I cannot find reliable
configuration or information. Also the current image is out of date. Thanks

~~~
mglukhovsky
Amazon changed the image format, and we've been working to update our images
to use it. Here's some more detail: [https://github.com/rethinkdb/marketplace-
ami/issues/1](https://github.com/rethinkdb/marketplace-ami/issues/1)

If you like, you can launch a 1.16 AMI, ssh into the instance, and run `apt-
get update && apt-get install rethinkdb` to update to RethinkDB 2.1.

Thanks for being patient -- we'll get the official images updated soon.

------
chadlung
Very cool, thanks for all the hard work that went into this. Will the docs
[1][2] be updated at some point to reflect the Python 3.4.x asyncio support?
Right now just Tornado is documented.

[1] [http://rethinkdb.com/docs/async-
connections/](http://rethinkdb.com/docs/async-connections/) [2]
[http://www.rethinkdb.com/api/python/set_loop_type/](http://www.rethinkdb.com/api/python/set_loop_type/)

~~~
coffeemug
Yes, we'll update the docs very soon.

------
wilsonfiifi
Great news! Keep up the good work. It's getting harder and harder to justify
not using rethinkdb in production :-)

...Doesn't seem available on homebrew yet though.

~~~
coffeemug
We should be able to make it available on brew very soon.

~~~
wilsonfiifi
Thanks!

------
kureikain
Finally, we can convince our management to start to use it. All of the
beautiful of ReQL, then addhing high availability What else I can expect more.

------
barosl
> Always on – you can add and remove nodes from a live cluster without
> experiencing downtime.

This has been a long-awaited feature for me. While I loved nearly every aspect
of RethinkDB, it was the reason that made me hold back from using RethinkDB.
Good to see RethinkDB keep improving!

------
Spiritus
I couldn't really find any good docs on how to use the various async Python
drivers...? All I found was some references to Tornado under `set_loop_type`.

Also, very much looking forward to trying this out!

~~~
mglukhovsky
Besides the documentation article Slava linked to, you might find this blog
post helpful: [http://rethinkdb.com/blog/async-
drivers/](http://rethinkdb.com/blog/async-drivers/)

If there's anything else you think is missing from the documentation that
would be helpful, open an issue here:
[https://github.com/rethinkdb/docs](https://github.com/rethinkdb/docs)

------
GordyMD
So happy you've added in Math functions into ReQL. Thank you!

------
mikes25
Any support for Windows yet? I'm keen to move to rethinkDB from using redis,
but my development is done on Windows at the moment.

~~~
mglukhovsky
A Windows port is in progress
([https://github.com/rethinkdb/rethinkdb/labels/windows](https://github.com/rethinkdb/rethinkdb/labels/windows)),
but it will take some time to complete. Windows support is one of our most-
requested features:
[https://github.com/rethinkdb/rethinkdb/issues/1100](https://github.com/rethinkdb/rethinkdb/issues/1100)

------
EugeneOZ
Comics is awesome.

------
gauravphoenix
official JDBC drivers please :)

~~~
tracker1
I know it's kind of a mixed bag. I'm also slightly, but not completely
surprised that .Net and Java aren't officially supported.. I wouldn't expect
JDBC support, but would expect to see a Java library for use with RethinkDB.
Given the flexible nature of RethinkDB and other document databases, dynamic
language environments tend to be much easier to support over static
environments like .Net and Java.

Honestly, if you want to use RethinkDB with Java, it may be worthwhile to
write a domain centered service with Node or Python and have that as an
intermediary for Java. I've actually used Node on several occasions as a
translation service for requests to foreign systems as sometimes there's a lot
of disconnect in specific implementations of SOAP/WS-* services from
Java/PHP/.Net etc. It tends to work _very_ well for this use case.

I've actually been looking at GraphQL with some interest, and thinking this
could be a pretty awesome option in front of RethinkDB, which would open up to
pretty much any client that supports graph, which is limited right now...

~~~
habitue
I'm actually writing the official Java driver right now. We should have a beta
version out in a few weeks

Follow
[https://github.com/rethinkdb/rethinkdb/issues/3930](https://github.com/rethinkdb/rethinkdb/issues/3930)
for progress updates

------
level09
Great news, Does any one know/recommend a python ORM for RethinkDB ?

------
shockzzz
Uhhh what? "Added support for Jepsen tests" shouldn't mean "we sent Kyle a
pull request"

That seems like deceptive marketing to me. Once the pull request is _merged_ ,
then you can make that claim.

Here's the open PR for Jepsen:
[https://github.com/aphyr/jepsen/pull/70](https://github.com/aphyr/jepsen/pull/70)

~~~
coffeemug
I wrote that paragraph of the blog post, and I think I didn't phrase it
correctly. What I meant to say is that we hacked Jepsen tests to support
RethinkDB, and then ran the tests internally for months. I added that note
late last night, definitely could have phrased it better.

We've been working with Kyle on this though, and I think he seemed happy to
merge the PR (but he's pretty busy). Hopefully will happen soon, sorry for
confusion.

EDIT: here is some context --
[https://github.com/rethinkdb/rethinkdb/issues/1493#issuecomm...](https://github.com/rethinkdb/rethinkdb/issues/1493#issuecomment-124598319).

