v0.22.0
slater v0.22.0
Live, durable writes — and a re-planed, smaller on-disk format. Slater still
serves graphs bigger than RAM over Bolt at a fixed cache budget; this release adds
a durable write path on the same immutable image and generalises the storage codecs
so the format is smaller and usable in its encoded form.
Writes (the headline)
- A durable write layer over the immutable core: writes land in an in-RAM memtable,
flush to immutable L0 delta segments, and fold back into the core by background
consolidation — all over standard Bolt, so existing drivers write as well as read.
Group-committed batches (write-UNWIND), off-heap L0, size-tiered and fraction-of-core
auto-consolidation with a hard-cap throttle, and an off-peak consolidation window. - Business-key MERGE / SET / DELETE on the live graph: create-on-absent, patch a core
node/edge in place (including relocating a moved indexed value), properties on
delta-born nodes and edges, delete by business key. The read cost of a write scales
with the delta, not the graph: count(*) and label/reltype marginals stay metadata
reads with writes outstanding. - GQL INSERT write spelling alongside Cypher.
Storage format (FORMAT_VERSION 7 — no back-compat, rebuild generations)
- A generic per-chunk "plane" codec (Elias-Fano / RLE / bit-packed / raw / zstd,
chosen per chunk) backs the degree column, resident key columns, endpoint postings,
node labels and the topology CSR — usable encoded, no decompress on the hot path. - Topology carries a per-reltype directory: a typed expansion decodes only the matching
relationship type's runs. - Codec discipline: every codec carries its Constant/RLE/complement co-candidate rather
than committing to one — a dense endpoint set stores its sparse complement, a
single-label column is a run, and a constant chunk is just a single-run RLE. On the
91.6M-node / 1.49B-edge reference graph this keeps node_labels at 242 MB (not 1.1 GB)
and the reltype postings under a megabyte, all decompress-free.
Query performance
- k-hop count(endpoint) summed over a maintained per-node degree column instead of
walking the final hop; hub-degree streaming bounds multi-hop counts on dense graphs.
Full Changelog: v0.21.0...v0.22.0