pactree · research

PACTree

PACTree is a persistent range index that decouples a trie search layer from linked data nodes and updates routing asynchronously.

Related Observatory article: PACTree on hesela.com

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. [1]

The 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. [3]

Relations

related
B+ tree, Persistent memory, Crash consistency

Limitations

  • In the later equal-core-budget study, background lag increased insert latency at 20 threads; asynchronous work does not remove its CPU cost. [2]
  • PiBench's variable-length-key comparison excluded PACTree because generated keys can contain NUL bytes; omission is not a measured performance loss. [2]

Citations

  1. 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. (accessed 2026-11-14)
  2. 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. (accessed 2026-11-14)
  3. PACTree artifact, revision f173a0f: StringKey constructors, set and comparisons in include/common.h. (accessed 2026-11-14)

Further reading

  1. Hesela: PACTree routing lag and key-domain evidence. (accessed 2026-11-14)
Sources & caveats
  • 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.

JSON: /data/terms/pactree.json

Published by Hesela team · Updated

Report a correction · Editorial standards · Reuse guidance

Cite this page
Hesela team. PACTree. Hesela. 2026-11-14. https://hesela.dev/terms/pactree/