Skip to content

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 15:50

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