{
  "slug": "pactree",
  "term": "PACTree",
  "aliases": [],
  "definition": "PACTree is a persistent range index that decouples a trie search layer from linked data nodes and updates routing asynchronously.",
  "note": "The data layer persists a structural modification before background work updates the search layer. A lookup can follow sibling links from an outdated routing result. Recovery still repairs unfinished structural modifications. [pactree-paper]\n\nThe inspected StringKey uses C-string comparison, so an explicit-length setter does not make embedded NUL bytes distinguishable. This is a key-domain constraint, not evidence of a crash-recovery failure. [pactree-code]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "In the later equal-core-budget study, background lag increased insert latency at 20 threads; asynchronous work does not remove its CPU cost.",
      "citationIds": [
        "pactree-evaluation"
      ]
    },
    {
      "text": "PiBench's variable-length-key comparison excluded PACTree because generated keys can contain NUL bytes; omission is not a measured performance loss.",
      "citationIds": [
        "pactree-evaluation"
      ]
    }
  ],
  "related": [
    "b-plus-tree",
    "persistent-memory",
    "crash-consistency"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "pactree-paper",
      "title": "Kim et al. PACTree: A High Performance Persistent Range Index Using PAC Guidelines. SOSP 2021, sections 5.2-5.9. DOI: 10.1145/3477132.3483589.",
      "url": "https://cosmoss-jigu.github.io/pages/pubs/pactree-kim-sosp21.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "pactree-evaluation",
      "title": "He et al. Evaluating Persistent Memory Range Indexes: Part Two. PVLDB 15(11), 2477-2490, 2022, sections 6.1-6.7 and footnote 10. DOI: 10.14778/3551793.3551808.",
      "url": "https://www.cs.sfu.ca/~tzwang/pibench-ep2.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "pactree-code",
      "title": "PACTree artifact, revision f173a0f: StringKey constructors, set and comparisons in include/common.h.",
      "url": "https://github.com/cosmoss-jigu/pactree/blob/f173a0f30a3ea492cdc194e6e83a00f9807a8cc8/include/common.h",
      "accessed": "2026-11-14"
    },
    {
      "id": "hesela-pmem",
      "title": "Hesela: PACTree routing lag and key-domain evidence.",
      "url": "https://hesela.com/analyses/pmem-persistence-domains-dax/#pactree",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "Primary-source synthesis and a native replay of the exact pinned StringKey class fragment under -O0 and -O2 -DNDEBUG; not a full index, PMDK, hardware or recovery experiment."
  ]
}
