Asynchronous, Temporal REST With Vert.x, Keycloak and Kotlin Coroutines

How we built an asynchronous, RESTful API for a log-structured, temporal, versioned NoSQL document store — Sirix.io (open source and free)

Interactive Visualization — Uses Hierarchical Edge Bundles to visualize moved nodes.

Why retaining old versions/revisions of your data becomes feasible nowadays

The evolutionary, temporal NoSQL store Sirix.io

Sirix is a versioned, temporal storage system, which is log-structured at its very core.

Writes are batched and synced to disk in a post-order traversal of the internal index tree-structure, during a transaction commit. Thus, we convert random write I/O to sequential writes. Furthermore we are able to store hashes of the pages in parent-pointers just like ZFS for future integrity checks (Merkle-Tree). The Uber-Page, which is the root page of the resource is written last. Thus, our storage is always consistent without the need of write-ahead-logging (WAL). Instead of having a persistent log and a data store we only have the log-structured index (and a lightweight buffer manager).

Sunburst View of a file system import

Simple, transactional cursor based API

Powerful XQuery API for JSON and XML

Vert.x, Kotlin/Coroutines and Keycloak

Things to consider when building the Server

API design by example

$server$serverPath?query=let%20%24nodeKey%20%3A%3D%20sdb%3Anodekey(.%3D%3Efoo%5B%5B2%5D%5D)%0Areturn%20%7B%22nodeKey%22%3A%20%24nodeKey%7D

Note, that we also have sophisticated diffing capabilities, but lacking a proper serialization format for JSON right now. Regarding XML we currently emit XQuery Update Statements. Furthermore we want to re-enable a dated GUI based on (still ;-)) novel visualization approaches for comparing tree structures: https://www.youtube.com/watch?v=l9CXXBkl5vI&t=26s

Support me

The open source repository: https://github.com/sirixdb/sirix

Sirix website: https://sirix.io

The new community forum: https://sirix.discourse.group

HackerNoon.com

#BlackLivesMatter

HackerNoon.com

Elijah McClain, George Floyd, Eric Garner, Breonna Taylor, Ahmaud Arbery, Michael Brown, Oscar Grant, Atatiana Jefferson, Tamir Rice, Bettie Jones, Botham Jean

Johannes Lichtenberger

Written by

I'm working on a persistent, durable document store called SirixDB written in Java in my spare time. It's especially well suited for novel byte-addressable NVM.

HackerNoon.com

Elijah McClain, George Floyd, Eric Garner, Breonna Taylor, Ahmaud Arbery, Michael Brown, Oscar Grant, Atatiana Jefferson, Tamir Rice, Bettie Jones, Botham Jean