Realtime Web Apps

with 

Horizon + RethinkDB

 

by Zak Burki

16th Jun 2016

Horizon + RethinkDB

  • What is RethinkDB?
  • What's this Horizon?
  • Why Use any of it?

RethinkDB

  • RethinkDB is an opensource NOSQL Database (like MongoDB)
  • Documents Store (Objects)
  • Built using C++ for speed 
  • High Availability and Distributed
  • Designed to push changes into the queries for real-time updates (instead of traditional polling)
  • Supports Table Joins (SQL style)!

RethinkDB

Official Drivers Available for :

 

  1. JavaScript
  2. Ruby
  3. Python
  4. Java

 

Unofficial Drivers Available for many other Programming Languages. (Go, PHP, C#, Haskell, Clojure, Elixir etc.)

ReQL

SQL:

ReQL:

r.table("posts")
  .filter(function (post) {
    return r.table("users")
      .filter(function (user) {
        return user("id").eq(post("authorId"))
      }).count().gt(0)
    })

SELECT * FROM users
WHERE
SELECT *
  FROM posts
  WHERE EXISTS
    (SELECT * FROM users
     WHERE posts.author_id
         = users.id)

What is Horizon?

Horizon is a small lightweight JavaScript Layer written on-top of RethinkDB to give direct access to the DB via a set of APIs.

Well, in conjunction with changefeeds, you can write a real-time 'severless' application directly using JavaScript front-end web and mobile frameworks.

And why do I care?

Ok - I lied.

 

It's not really 'serverless'.

Horizon consists of 3 parts:

- Horizon CLI

- Horizon Client

- Horizon Server (middleware)

Sample

      hz("airlines").fetch().subscribe(
          result => console.log('Result:', result),
          (err) => console.log(err),
          () => {
            console.log('Results fetched')
          }
        );
      horizon.onReady().subscribe(() => console.log("Connected to Horizon server"))

      horizon.onDisconnected().subscribe(() => console.log("Disconnected from Horizon server"))

      horizon.connect();

Horizon Pros

  • Built in social authentication

  • Scales better than Meteor

  • Is Free to Use (unlike Firebase)

  • Extendible using most languages when you need more complex business logic.

Horizon Cons

To be continued...

Any Questions?

twitter: @zakburki

Realtime Web Apps - Horizon + Rethink

By Zak Burki

Realtime Web Apps - Horizon + Rethink

Real-time capabilities of RethinkDB

  • 841