[Feature] Maintain source-backed primary-key BTree indexes during compaction
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Bắt đầu bằng cách đọc implementation được tham chiếu trong #245 và đường dẫn đọc primary key dựa trên source trong #192 và #194. Theo dõi các storage format hiện có cùng các abstraction cho reader và writer nội bộ, manifest, path, sort-buffer và commit. Hoàn thành khi các fixed-bucket write và compaction duy trì payload theo từng field và ở level dương, trong khi cleanup và các build thất bại vẫn bảo toàn scan fallback an toàn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search before asking
- I searched in the issues and found nothing similar.
Motivation
#192 and #194 added the source-backed primary-key BTree read path. Paimon C++ writers still need the corresponding maintenance path: after compaction changes the active source files of a data level, a missing or stale payload leaves that level uncovered and queries fall back to normal file scans.
Paimon C++ should maintain these payloads during fixed-bucket primary-key writes and compaction, using the existing Java-compatible source metadata, BTree payload format, and index manifests.
Solution
Add the source-backed primary-key BTree maintenance lifecycle for fixed-bucket primary-key tables:
- Validate the Java-equivalent table and index prerequisites.
- Restore committed source-backed payload metadata into bucket writers without mixing Data Evolution payloads.
- Build one payload per indexed field and positive data level from physical source rows, then commit matching index additions and deletions in the same snapshot as the data changes.
- Reconcile missing, stale, duplicate, replaced, removed-definition, and empty-level payloads during compaction.
- Isolate build failures to the affected field and level so reads safely fall back to normal scans and a later maintenance attempt can rebuild the payload.
- Retain live index files during snapshot expiration and orphan cleanup, including tag and branch safety and external-file deletion retries.
Reuse the existing storage formats and internal reader, writer, sort-buffer, path, manifest, and commit abstractions. Do not introduce a new index family or storage protocol.
The implementation is in #245. It keeps maintenance synchronous; Java asynchronous scheduling, manual rebuild actions, realtime writers, and postpone-bucket writers remain outside this scope.
Anything else?
This is a maintenance-path follow-up to the read-path work in #192 and #194. It ports an existing Java capability, so no separate PIP is proposed.
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Ngôn ngữ chính
- C++
- Star
- 65
- Fork
- 29
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 78
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/paimon-cpp
-
enhancement
apache/paimon-cpp#381 · 1 người được giao ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
apache/paimon-cpp#375 · 1 người được giao ·
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
apache/paimon-cpp#361 · 1 người được giao ·
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
apache/paimon-cpp#325 · 1 người được giao ·
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/paimon-cpp#319 · 1 reaction · 1 người được giao ·
Tất cả issue của apache/paimon-cpp
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
objectionary/eo-graphs#74 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
-
enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
QuantStack/git2cpp#187 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100