{
  "slug": "parallax",
  "term": "Parallax",
  "aliases": [
    "Parallax key-value store"
  ],
  "definition": "Parallax is a research LSM key-value store that combines in-place records, a transient medium-record log and a garbage-collected large-record log.",
  "note": "Placement: Small records stay in the index. Medium records begin in L0 and its recovery log, enter a sorted transient log during compaction, then return in place at a lower level so whole transient segments can be reclaimed. Large records still require log garbage collection. [parallax-paper]\n\nClassification: Revision d4aae58 uses min(key bytes, value bytes) / max(key bytes, value bytes), plus an in-place size cap. With the cap inactive, 8-byte keys and 120-byte values are medium, while 32-byte keys and 96-byte values are small: equal 128-byte totals need not share a category. Both 0.02 and 0.2 belong to the medium interval. [parallax-code]\n\nConfiguration: The implementation moves medium-log records back in place at the configured level_medium_inplace, rather than assuming that every deployment uses the last level. The checked options file sets this level to 3. [parallax-compaction] [parallax-options]",
  "citations": [
    {
      "id": "parallax-paper",
      "title": "Xanthakis et al. Balancing Garbage Collection vs I/O Amplification using hybrid Key-Value Placement. arXiv:2106.03840v2, sections 2-5.",
      "url": "https://arxiv.org/pdf/2106.03840v2",
      "accessed": "2026-11-15"
    },
    {
      "id": "parallax-code",
      "title": "Parallax author source d4aae58: calculate_KV_category in lib/btree/btree.c.",
      "url": "https://github.com/CARV-ICS-FORTH/parallax/blob/d4aae5890630bb33405f3a9e03cc4e4978133ecf/lib/btree/btree.c#L724-L748",
      "accessed": "2026-11-15"
    },
    {
      "id": "parallax-compaction",
      "title": "Parallax author source d4aae58: medium-record transitions in compaction_worker.c.",
      "url": "https://github.com/CARV-ICS-FORTH/parallax/blob/d4aae5890630bb33405f3a9e03cc4e4978133ecf/lib/btree/compaction/compaction_worker.c#L451-L477",
      "accessed": "2026-11-15"
    },
    {
      "id": "parallax-options",
      "title": "Parallax author source d4aae58: options.yml.",
      "url": "https://github.com/CARV-ICS-FORTH/parallax/blob/d4aae5890630bb33405f3a9e03cc4e4978133ecf/options.yml",
      "accessed": "2026-11-15"
    },
    {
      "id": "parallax-publication",
      "title": "Parallax: Hybrid Key-Value Placement in LSM-based Key-Value Stores. SoCC 2021, pp. 305-318. DOI:10.1145/3472883.3487012.",
      "url": "https://doi.org/10.1145/3472883.3487012",
      "accessed": "2026-11-15"
    }
  ],
  "related": [
    "key-value-separation",
    "value-log",
    "lsm-tree",
    "kreon"
  ],
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "The paper's recovery contract allows loss of the latest acknowledged writes. Recovery to a consistent point is not a promise that every returned write is durable.",
      "citationIds": [
        "parallax-paper"
      ]
    }
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-15",
  "provenance": [
    "Design and evaluation scope use the June 2021 preprint, not an assumed byte-identical copy of the final SoCC paper. [parallax-paper] [parallax-publication]",
    "The evaluation used one server, a 375-GB Optane P4800X and RocksDB/BlobDB 6.11.4 with Bloom filters disabled. Results are not current-engine rankings. [parallax-paper]",
    "Source inspection of revision d4aae5890630bb33405f3a9e03cc4e4978133ecf; no engine benchmark, power-loss test or recovery reproduction was performed."
  ]
}
