Slide 1

Slide 1 text

The open-source database for the realtime web.

Slide 2

Slide 2 text

Source: http://googledrive.blogspot.com/2014/06/newdocssheetsslides.html

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Building realtime apps is hard It’s hard to keep track of state in realtime architectures. Realtime web app server Realtime web app server Mobile app server Message queue Database cluster Queues communicate state and messages between servers.

Slide 5

Slide 5 text

Building realtime apps is hard Polling data to keep track of updates is cumbersome. Adding new realtime functionality keeps getting harder. Routing realtime messages vs. broadcasting messages. It’s hard to keep track of state in realtime architectures.

Slide 6

Slide 6 text

What is RethinkDB? • Open source database for building realtime web apps • NoSQL database that stores schemaless JSON documents • Distributed database that is easy to scale

Slide 7

Slide 7 text

Built for realtime apps RethinkDB lets you subscribe to change notifications on database queries. r.table(‘users’).changes() # Opens a changefeed on a table Subscribe to changes on the ‘users’ table: No more polling: the database pushes changes to your app, with a live stream of updates.

Slide 8

Slide 8 text

Built for realtime apps Changefeeds let you build scalable, realtime apps. Realtime web app server Realtime web app server Mobile app server RethinkDB cluster Each server subscribes to a RethinkDB changefeed. Servers are stateless, and scale easily (just open a changefeed!)

Slide 9

Slide 9 text

Built for realtime apps Changefeeds let you build scalable, realtime apps: • Collaborative web and mobile apps • Multiplayer games • Streaming analytics apps • Realtime marketplaces • Connected devices

Slide 10

Slide 10 text

Querying RethinkDB r.table(‘users’) .pluck(‘last_name’) .distinct().count() Count unique last names with ReQL:

Slide 11

Slide 11 text

Querying RethinkDB r.table(‘users’) .pluck(‘last_name’) .distinct().count() Count unique last names with ReQL: Access a database table

Slide 12

Slide 12 text

Querying RethinkDB r.table(‘users’) .pluck(‘last_name’) .distinct().count() Count unique last names with ReQL: Isolate a document property

Slide 13

Slide 13 text

Querying RethinkDB r.table(‘users’) .pluck(‘last_name’) .distinct().count() Count unique last names with ReQL: Consolidate duplicate values

Slide 14

Slide 14 text

Querying RethinkDB r.table(‘users’) .pluck(‘last_name’) .distinct().count() Count unique last names with ReQL: Count the number of items

Slide 15

Slide 15 text

Understanding ReQL RethinkDB’s query language embeds natively into your programming language. • Compose queries by chaining • Queries are executed and distributed on the server • Python, Ruby, JavaScript, and 20+ other languages supported

Slide 16

Slide 16 text

What can you do with ReQL? • Transformations: map, orderBy, skip, limit, slice • Aggregations: group, reduce, count, sum, avg, min, max, distinct, contains • Documents: row, pluck, without, merge, append, difference, keys, hasFields, spliceAt • Writing: insert, update, replace, delete • Control: forEach, range, branch, do, coerceTo, expr

Slide 17

Slide 17 text

Changefeeds work on queries r.table(‘user_profiles’) .filter(r.row(‘likes’).gt(30)) .changes() Get notified when a user profile gets over 30 likes:

Slide 18

Slide 18 text

Changefeeds work on queries r.table(‘user_profiles’) .filter(r.row(‘likes’).gt(30)) .changes() Get notified when a user profile gets over 30 likes:

Slide 19

Slide 19 text

Changefeeds work on queries r.table(‘user_profiles’) .filter(r.row(‘likes’).gt(30)) .changes() Get notified when a user profile gets over 30 likes: Clients can subscribe to this realtime stream of updates.

Slide 20

Slide 20 text

Example: realtime questions questions.rethinkdb.com Let’s play with changefeeds: Check out the code yourself: github.com/mglukhovsky/realtime-questions

Slide 21

Slide 21 text

Example: realtime questions Questions server Questions server Dashboard server RethinkDB cluster Changes are pushed to each stateless app server.

Slide 22

Slide 22 text

Advancing the realtime web The push access model simplifies realtime architecture. One source of truth makes it easy to manage state. RethinkDB is the first database for the realtime web. Polling for data is slow, cumbersome, hard to maintain.

Slide 23

Slide 23 text

Learn more about RethinkDB Get started: rethinkdb.com/install Read the docs: rethinkdb.com/docs Follow on Twitter: @rethinkdb