Skip to content
Contents

Overview

Rindle is a new, from-scratch relational database built to support efficient live queries from the ground up. It grew out of our work on Zero.

The Promise

view-after-write == fresh-query

The changes a subscriber receives, applied in order, always equal running the query again from scratch. Everything else in Rindle is built to keep that true. Consistency has the full list of guarantees.

Query Languages

Rindle speaks a subset of SQL with some convenience extensions. It can also receive raw ASTs from clients, enabling native support for typed query builders.

Writes are SQL statements, sent one at a time, in a batch, or in an interactive transaction. Schema changes are via a small native migration system.

Rindle does not currently support traditional joins, but does have native support for tree queries via the WITH statement which are often more useful.

Where It Runs

Shape

A small app runs one server which handles subscriptions and writes.

To scale, Rindle splits into a leader, which takes every write, and any number of read followers, which run the live queries. Your app sees the same URL and the same API either way. Self-Hosted shows the layout.

Interface

Rindle’s interface is HTTP. Your server sends queries and writes, and creates subscriptions; each browser or client reads its own stream of changes directly. Architecture shows how that fits into an app, and the client libraries wrap it.