Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Presentation to STL Angular Meetup

Presentation to STL Angular Meetup

Daniel Alan Miller

September 24, 2015
Tweet

More Decks by Daniel Alan Miller

Other Decks in Technology

Transcript

  1. 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.
  2. Building realtime apps is hard Polling data to keep track

    of updates is cumbersome. Adding new realtime functionality keeps getting harder. It’s hard to keep track of state in realtime architectures.
  3. 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.
  4. 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
  5. 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 • High availability database with automatic failover and robust fault tolerance
  6. 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.
  7. 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!)
  8. 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
  9. 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
  10. 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 • Joins: inner_join, outer_join, eq_join, zip
  11. 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.
  12. Example: realtime questions questions.dalanmiller.com Let’s play with changefeeds: Check out

    the code yourself: github.com/mglukhovsky/realtime-questions
  13. Example: realtime questions Questions server Questions server Dashboard server RethinkDB

    cluster Changes are pushed to each stateless app server.
  14. 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.
  15. Learn more about RethinkDB Get started: rethinkdb.com/install Read the docs:

    rethinkdb.com/docs Follow on Twitter: @rethinkdb Follow Me!: @dalanmiller