Hi all

I've been experimenting with a record-level approach to segment
compaction. Instead of rebuilding the content tree from NodeState like
the classic compactors do, RecordRepacker walks the DAG of records
reachable from the root record and repacks the raw records into
densely-packed segments of a new generation, rewriting RecordId
references as it goes - optionally in parallel and with record
deduplication.

Early benchmarks on a real store look encouraging (roughly ~1.9×
faster, ~25% smaller, ~40% fewer records, lower heap, and better read
locality than the classic/parallel compactors).

Two important caveats up front:

- This is a research prototype, not ready for production.
- The code is fully AI-generated and has not yet been reviewed for
correctness or robustness.

I'd welcome feedback on the idea and the approach. Branch and a short write-up:

- Branch: 
https://github.com/apache/jackrabbit-oak/tree/record-repacker-prototype
- Slides / documentation:
https://github.com/apache/jackrabbit-oak/blob/record-repacker-prototype/oak-segment-tar/docs/record-repacker-research-slides.md

Please take a look at the branch and the slides and let me know what you think.

Thanks
Julian

Reply via email to