-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Revori is a distributed DBMS designed to stream rapidly-changing data to large numbers of users efficiently and reliably. Unlike most DBMSes, it allows clients to subscribe to a given query and receive live updates to the result set as they happen without needing to poll for changes. Most importantly, this stream of updates is subject to flow control such that intermediate states are skipped to ensure that only the latest data are delivered. This allows clients of various speeds to subscribe to the same stream without any of them falling arbitrarily behind, assuming the database itself does not grow without bound.
Applications may query and modify a database using either traditional SQL syntax or a type-safe Java API. Revori provides a full relational model including joins, aggregates, materialized views, foreign keys, and transactions. In particular, materialized views may be used to index arbitrary queries and provide efficient, denormalized access to data without risking the integrity of the underlying data. Moreover, clients may subscribe to these views as if they were first class tables.
Rows of data are represented as sparse sets of key-value pairs. This means that each row may potentially contain values for a different set of columns beyond those required by the primary key, similar to a column-oriented database such as HBase. This allows applications to add new columns on the fly in constant time; rows which do not contain values for a given column will simply return "null" when queried for that column.
In terms of the CAP theorem, Revori favors availability over strict consistency and durability by default. However, applications are free to embed the DBMS and layer code on top of it to block readers and/or writers according to the desired semantics.