Real-time web apps: Has RethinkDB's moment arrived?

With the rise in web applications that push data in real time, the people behind open-source RethinkDB think they've got a database that's perfectly cut out for the task.
Written by Toby Wolpe, Contributor
CEO Slava Akhmechet: Everyone wants to build more reactive, responsive, real-time apps.
Image: RethinkDB
The signs seem promising for real-time NoSQL database RethinkDB. As well as IBM opting to provide it as part of its newly-acquired Compose hosted database service, RethinkDB has also recently emerged as the number one document database on GitHub.

RethinkDB CEO Slava Akhmechet attributes the rise of this scalable JSON database, used by more than 100,000 developers worldwide, to the shift to real-time web applications, for which it has been explicitly designed.

"We generate a lot more data than we used to and we want to see it faster. People have got used to the experience on Facebook and Twitter and now everyone wants to build more reactive, more responsive, more real-time applications," he said.

"Remember the Ajax revolution - when Ajax allowed people to build websites so you didn't have to reload the whole site. That was a huge thing, and now it's happening again with WebSockets. People are pushing data to the web browser in real time."

Interactive comms protocol WebSocket allows web services to do just that. The standard has been around since 2011 but most browsers implemented it only relatively recently.

A familiar example of that real-time experience is Google Docs, where those with access to a document can watch it changing as members of their group make modifications.

"There are tons of collaborative applications and multiplayer games where that kind of behaviour happens. The development stacks are being retooled from traditional long-polling architectures, which are hard to build and hard to scale and hard to maintain," Akhmechet said.

"Traditionally, what was happening was you had to poll the data store for its data. You had to pull the data out of the database. That doesn't work so well anymore for applications where you push data through the browser."

According to Akhmechet, although popular tools such as the React JavaScript library from Facebook and the AngularJS framework from Google have helped developers build real-time web apps, little has occurred on the database front to assist them.

That was the impetus for RethinkDB co-founder Michael Glukhovsky and Akhmechet, who started out developing custom databases for high-frequency trading on Wall Street, to create a document store that allows data to be pushed to applications in real-time.

"RethinkDB started as an experiment. We just thought, 'Hey, what would happen if we built a database that supports this new architecture?' - and it worked really well," Akhmechet said.

"The way it works, instead of writing a query to get the data and then running it again and again every few seconds, the user subscribes to the data. So they say, 'I'm interested in this query'.

"Then, any time something changes in the database, it pushes a notification to the developer saying, 'Hey, the data has changed. Here's a new result'. What that does is make building and scaling real-time applications dramatically easier."

That approach of pushing, as opposed to pulling data, is not one used by other databases, Akhmechet said.

"The reason no one else does that is because near real-time applications are new and the technology to allow pushing data to the browser only matured very recently. It's a new thing that's happening," he said.

"In general, real time is becoming very popular and all the development tools around it have become mature quite recently but the databases haven't."

As well as a widening community of contributors to the open-source database project from around the world and what Akhmechet describes as a rapidly growing number of users, RethinkDB is starting to be deployed in production in various use cases, including some at Fortune 500 companies.

Among firms using it is collaboration specialist Jive Software, which built a real-time chat platform on top of RethinkDB.

The database has been available via Amazon AWS since 2013 and on Compose before IBM's takeover in July and decision earlier this month to take hosted RethinkDB out of beta and into general availability.

"It's very significant. When RethinkDB support on Compose was in beta, a lot of startups felt confident to use that cloud offering. But a lot of the enterprises didn't," Akhmechet said.

"With IBM now supporting RethinkDB officially, a lot of our enterprise customers now feel confident that they could use that service. They have multi-year contracts and they're looking pretty far out and it's important for them to know that the technology will be around for a long time. This official support gives them that confidence."

A lot of the earlier development of RethinkDB was aimed at robustness and performance. For security, the focus has been on integration with existing mainstream security tools.

For the moment, the RethinkDB company is offering client services such as online and onsite training, and real-time development and production support.

"From here, we're going to start building more software services around RethinkDB - things like backup monitoring. There are a lot of auxiliary services that people want to pay for and all of that is in the pipeline," Akhmechet said.

More on databases

Editorial standards