Skip to content

feat: Add YDB support to the benchmark#791

Open
zinal wants to merge 2 commits into
zilliztech:mainfrom
zinal:add-ydb-support
Open

feat: Add YDB support to the benchmark#791
zinal wants to merge 2 commits into
zilliztech:mainfrom
zinal:add-ydb-support

Conversation

@zinal

@zinal zinal commented May 31, 2026

Copy link
Copy Markdown

YDB is a distributed SQL database which supports vector search, including the exact and indexed (approximate) search.

This PR adds basic support for YDB to the VectorDBBench code.

Fixes #792

Notes for maintainers

Adding a YDB client requires small, opt-in extensions to shared benchmark infrastructure. The goal is to support gRPC-based clients and case-specific index DDL without changing behavior for existing databases.

All changes follow the same pattern already used for thread_safe in concurrent_runner.py: boolean capability flags on VectorDB, checked via getattr(..., False). No database-specific if db == DB.X branches remain in shared runners.

YDB uses a gRPC driver and builds vector_kmeans_tree indexes after data load. Index DDL depends on the case filter type. That creates three practical constraints:

  1. Subprocess + pickle — the YDB driver/session pool cannot be pickled when ProcessPoolExecutor forks or spawns a child process.
  2. Filters at init time — index shape must be known when optimize() runs, not only during search.
  3. Per-case table names — same requirement as for Doris: avoid cross-case interference when running multiple benchmarks against one cluster.

These are client-specific needs, not general benchmark changes.

@sre-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: zinal
To complete the pull request process, please assign xuanyang-cn after the PR has been reviewed.
You can assign the PR to them by writing /assign @xuanyang-cn in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@zinal zinal changed the title Add YDB support to the benchmark feat: Add YDB support to the benchmark May 31, 2026
@XuanYang-cn

Copy link
Copy Markdown
Collaborator

I found one blocking issue in the YDB filtered-index path:

vectordb_bench/backend/clients/ydb/ydb_client.py builds filtered vector indexes as ON (id, embedding) or ON (labels, embedding), but _index_probe_query() probes VIEW vector_idx without the matching WHERE predicate. For filtered YDB vector indexes, queries through the index need the filter columns constrained, so the readiness probe can fail even after the index is usable. _probe_index_status() then treats that as still building, and _wait_for_index() can sit until the 7200s timeout on filtered cases.

Please update the readiness probe to use the same filter predicate as the search path, or use a schema/index-status check that does not depend on an unfiltered VIEW query.

Also, this PR is currently conflicting with main. Please rebase/merge main and fix the conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for YDB as a benchmark target database

3 participants