Replace HBC LSM with native WAL-backed generations - #593
Open
ajroetker wants to merge 118 commits into
Open
Conversation
…-wal # Conflicts: # go/pkg/sdk/oapi/client.gen.go # zig/build.zig # zig/e2e/antfly/test_index_lifecycle.py # zig/pkg/antfly/src/api/http_server.zig # zig/pkg/antfly/src/api/indexes.zig # zig/pkg/antfly/src/api/runtime_status.zig # zig/pkg/antfly/src/api/table_writes.zig # zig/pkg/antfly/src/data/runtime.zig # zig/pkg/antfly/src/metadata/http_server.zig # zig/pkg/antfly/src/metadata/runtime_status_protocol.zig # zig/pkg/antfly/src/metadata/service.zig # zig/pkg/antfly/src/metadata/storage/raft_apply_store.zig # zig/pkg/antfly/src/metadata/store_observer.zig # zig/pkg/antfly/src/metadata/table_manager.zig # zig/pkg/antfly/src/openapi/generated/antfly_indexes_openapi/root.zig # zig/pkg/antfly/src/openapi/generated/antfly_indexes_openapi/types.zig # zig/pkg/antfly/src/storage/db/core.zig # zig/pkg/antfly/src/storage/db/db.zig # zig/pkg/antfly/src/storage/db/derived/index_repair_state.zig
…-wal # Conflicts: # go/pkg/sdk/oapi/client.gen.go # zig/pkg/antfly/src/api/table_writes.zig
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CURRENT, covered source sequences, and query generation leaseszig/VECTORDBBENCH_FINDINGS.mdProduction invariants
Transaction and recovery authority
CURRENTis sole durable authority and recovery replays only the uncovered committed suffixQuery correctness and resource governance
Publication, backup, and cleanup
Rolling upgrades
Latest qualified public-API results
Same 1M VectorDBBench corpus, public HTTP API, batch 100, four load workers, default unrelated full-text index removed through the public table contract, native HBC, and exact score semantics:
Node-wide admission reached 381 MB across 17 active queries, queued 13 queries at peak, and recorded no cancellations. The reversed warm c30 result improves on the uncapped reversed baseline (608.29 QPS, 99.54 ms p95) and is close to r126 throughput (673.72 QPS) with better p95 than r126 (92.88 ms).
The latest fresh 50K qualification, after generation-coupled admission and bounded coalesced cold reads, reached ready in 31.28 s (14.13 s insert + 17.15 s readiness), recall 0.9855, QPS 225.4 / 929.9 / 1,017.2 / 1,029.4 at c1/10/20/30, p95 5.91 / 21.33 / 53.67 / 76.00 ms, 1.10 GB live RSS, and 339 MB restart RSS. The governor held all 30 concurrent queries at a 201.28-MB peak against 402.65-MB capacity with zero queueing, waits, cancellations, or wait time. Its detailed public profile scored 23,707.5 approximate and 137.3 exact vectors/query with 3.492-ms mean server time.
The host retained unrelated repository test load during that run, so its absolute QPS is not an uncontended replacement for the earlier 30.49-second, 0.9862-recall, 274 / 1,109 / 1,198 / 1,229-QPS qualification. The follow-up establishes that the rejected process-monotonic admission prototype's one-query/288.5-QPS serialization is gone without changing recall, candidate work, or exact-boundary reranking.
Full measurements, comparisons, rejected variants, and caveats are in
zig/VECTORDBBENCH_FINDINGS.md.Validation
origin/mainat20962387bcin7ba25f9cd9make generatemake zig-generated-checkzig build -Doptimize=Debugzig build -Doptimize=ReleaseFast -j2zig build antfly -Doptimize=ReleaseFast -j2zig build lib-vectorindex-test -Doptimize=Debug: 114/114zig build unit-storage-compile -Doptimize=Debugzig build resource-budget-test -Doptimize=Debug: 78/78zig build dense-index-lifecycle-regression-test -Doptimize=Debug: 45/45zig build lib-metadata-service-test -Doptimize=Debug: 97/97git diff --checkOne live-Postgres hosted-round aggregate test timed out locally while its synthetic metadata leader remained unavailable; deterministic metadata, codec, lifecycle, and service suites are green. CI is running on the merged commit.
Deferred artifact ownership boundary
Primary source embeddings and native exact-vector artifacts still have separate ownership. A later catalog feature should assign immutable source-artifact identities and explicit references, then let users promote validated model/dimension/schema/vector-space-compatible artifacts to managed/shared ownership. HBC topology, postings, and tree generations remain index-private.