[Feature] Replace Bluge with a native ICE-compatible inverted index
Maintainer thường phản hồi trong vòng 1 ngày
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
Đây là một tracker tổng thể, không phải một ứng viên triển khai. Bắt đầu với leaf issue theo thứ tự #14008, sau đó tiếp tục với #14009 đến #14012 khi các blocker được giải quyết. Toàn bộ công việc hoàn tất khi tất cả caller được nêu đều sử dụng native index, các gate về tính tương thích và khả năng khôi phục đều được thông qua, và các tiêu chí loại bỏ dependency được đáp ứng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Replace runtime Bluge/ICE with a minimal BanyanDB-owned inverted index while preserving ICE v3 and snapshot v3. BanyanDB owns index behavior; this is not a new-format migration.
The behavioral and compatibility authority remains BDB-NIDX-SPEC-001 revision 0.2, introduced by skywalking-banyandb#1306 and refined by skywalking-banyandb#1307. The tracker hierarchy below refines implementation granularity so each automated TDD run owns one observable seam and one mergeable live-caller replacement.
Boundary
Public pkg/index/ contracts remain stable for callers. Native implementation types are internal; no Bluge, ICE, or bluge_segment_api type may escape. The five top-level NIDX issues are tracking workstreams, not implementation candidates:
- bounded direct read-only operations;
- Property shard index;
- per-segment series
sidx; - Stream element
idx; and - remaining administration plus dependency removal.
TDD execution model
The TDD workflow selects the lowest-number open issue carrying both database and Backlog. Therefore:
- never apply
Backlogto this umbrella or a workstream parent; - only the oldest unblocked leaf may carry
Backlog; - a successor is not unblocked until its predecessor PR merges;
- create downstream leaves just in time, after their blocker has taught us the real seam; and
- every leaf must switch a named production/CLI caller in its merge—no fixture-only, parser-only, codec-only, shadow-only, or test-only leaf.
graph LR
A["NIDX-01A<br/>baseline count"] --> B["NIDX-01B<br/>generations + deletions"]
B --> C["NIDX-01C<br/>stored migration walks"]
C --> D["NIDX-01D<br/>exact schema walks"]
D --> E["NIDX-01E<br/>repair search-after"]
E --> P["decompose NIDX-02<br/>from merged seams"]
P --> S["decompose NIDX-03"] --> T["decompose NIDX-04"] --> R["decompose NIDX-05"]
Pre-filing all downstream leaves would be horizontal slicing: their contracts would describe interfaces that do not exist yet and would be stale when selected. File them only when the preceding workstream closes; their issue numbers will then naturally follow dependency order.
Current executable leaves: NIDX-01
- #14008 — baseline single-segment
ReadOnlyDocCount - #14009 — multi-segment generations and deletion masks, blocked by #14008
- #14010 — match-all stored walks for migration sources, blocked by #14009
- #14011 — exact-term/OR schema walks, blocked by #14010
- #14012 — Property repair tuple search-after, blocked by #14011
Each leaf owns checked-in compatibility-writer fixture bytes, literal expected values, one pre-agreed behavioral seam, RED and e2e commands, focused race/package suites, immutable-file proof, typed bounded corruption behavior, and explicit rollback.
Compatibility and durability contract
- Native readers open supported historical ICE v3/snapshot directories and return canonical logical results.
- During the retirement window, the pinned legacy oracle opens native output and can query, merge, restart, and externally receive it where applicable.
- No new disk version, opening-time migration, replay, or rewrite is allowed merely to remove dependencies.
- Required CRC32 fields remain layout bytes only; native code never calculates, validates, caches, or uses them.
- Publication is atomic; restart selects a complete preceding or new generation, never a partial snapshot.
- Malformed input returns bounded typed errors without panic, hang, leak, or unbounded allocation.
- Native index code uses BanyanDB database ownership for writer exclusion; it creates and requires no index-local PID or lock file.
- Read-only operations create no runtime file and do not change bytes, mtimes, or directory entries.
Required final product surface
- Bounded reads: committed generation, visible count, match-all stored walk, exact term/OR, deletion masks, and Property repair search-after.
- Property: upsert/delete, stored fields, required filters/sort, callbacks, snapshots, recovery, expiry merge, GC, repair, and backup.
- Series: field-aware mutation/projection, identity matching/dictionaries, filters/sort, index-mode Measure, snapshots, cache reset, and mixed-version receive.
- Stream elements: batch/NRT, required filters/analyzers, paired postings, doc-value sort, snapshot/restart/receive.
- Administration: verify, rebuild, union/dedup, reconstruction, migration output, dump, and final dependency removal.
BM25, boosts, phrase/fuzzy/geo, highlighting, facets, explanations, generic collectors, and plugin compatibility remain out of scope.
Lexical non-regression
Repository changes for every implementation leaf before the final removal may delete existing references but must add zero new case-insensitive bluge tokens and zero matching tracked paths. The gate includes imports and aliases, function/type/variable names, filenames and runtime names, strings, comments and messages, tests, fixture/provenance data, scripts, configuration, and generated assets. Compatibility evidence uses neutral legacy oracle or compatibility writer labels plus an immutable revision or content hash rather than adding a retired module name.
This lexical gate applies to repository changes, not to issue or archived-design prose that names the dependency in order to specify its removal.
Completion criteria
- Every leaf is merged and its named caller is native; no dormant native implementation lands.
- Product, historical-fixture, two-binary, crash, corruption, race, resource, and performance gates pass for the applicable workstream.
- Operational metrics, mismatch artifacts, recovery guidance, and rollback instructions are exercised.
- NIDX-01 through NIDX-04 add no new case-insensitive
blugetoken or matching tracked path in active repository surfaces. - The last NIDX-05 removal leaf deletes every pre-existing case-insensitive
blugetoken and matching tracked path outside archived design/research evidence and Git history; no alias, filename, runtime name, fixture metadata, or generated license remains. - Final dependency scans find no retired runtime or CLI edge; compatibility fixtures use neutral oracle identity and immutable hashes.
Top-level workstreams
- NIDX-01 — bounded read-only access, with five ordered TDD leaves above
- NIDX-02 — Property shard index, decompose after NIDX-01 closes
- NIDX-03 — per-segment series
sidx, decompose after NIDX-02 closes - NIDX-04 — Stream element
idx, decompose after NIDX-03 closes - NIDX-05 — administration and dependency removal, decompose after NIDX-01 through NIDX-04 close and retirement is approved
- Ngôn ngữ chính
- Java
- Star
- 25k
- Fork
- 6.6k
- Merge trung bình
- 12 giờ 57 phút
- Pull request đã merge (30 ngày)
- 46
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc 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/skywalking
-
[Bug] [BanyanDB] MCP HTTP server rejects a lowercase "bearer" Authorization schemeCó thể đã có người làm @UchihaIthachi đã nhận 2 ngày trước. Đang mởbug database
apache/skywalking#14199 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] Standalone multi-group Measure aggregation returns one row per groupCó thể đã có người làm @hanahmily đã nhận 3 ngày trước. Đang mởbug database
apache/skywalking#14198 · 2 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] [BanyanDB] MCP server ignores .env values and silently accepts malformed numeric/TRANSPORT settingsCó thể đã có người làm @wanjinhao1 đã nhận 4 ngày trước. Đang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
apache/skywalking#14194 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] BanyanDB trace block metadata format changed in 0.11 without a file format version bumpCó thể đã có người làm @hanahmily đã nhận 13 ngày trước. Đang mởbug database
apache/skywalking#14169 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
chore CLI database
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
apache/skywalking#14168 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của apache/skywalking
Issue tương tự
-
finsim-core good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
commons-app/apps-android-commons#7275 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
sonatype-nexus-community/central-publishing-maven-plugin#13 ·
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
liberation-data/drivine4j#682 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Document and enforce pull request review guidelinesCó thể đã có người làm @dashorst đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày