RethinkDB is an open-source distributed database built to store JSON and scale with very little effort. Self compared with MongoDB, RethinkDB is aiming to be developer friendly all the while maintaining an operations oriented approach of being highly available and high scale.
Prior to version 1.16, original intentions from RethinkDB was a system to push out changes from database level to specialized data stores like ElasticSearch or messaging systems. These were implemented as changefeeds, a way to subscribe to change notifications from the database. A client can subscribe to changes in a database table and get notified every time a change happens to it.
This feature was really well received and RethinkDB decided to expand it to explicitly support realtime apps. Building realtime apps in a truly scalable way is not easy and RethinkDB aims to change it. A client can subscribe to query results and will get a cursor that gets updated any time a change occurs in the database. RethinkDB claims that thousands of concurrent changefeeds can run in parallel, all getting results within milliseconds latency.
Comparing with realtime sync services like Firebase, PubNub and Pusher, RethinkDB offers better querying capabilities and can push changes on queries and not just single documents. Also, RethinkDB is an open-source system both at the protocol and implementation level. Finally, RethinkDB’s realtime push capabilities are architected for backend services, instead of the browser.
RethinkDB also aims to integrate changefeeds with Meteor and Volt to make sure it plays well with realtime web frameworks. A working example of the realtime capabilities of RethinkDB can be found as a realtime Instagram client for the web, capturing the latest cats from #catsofinstagram and plotting them on a map using geolocation. RethinkDB’s code is available on GitHub.