AnswersScale & Architecture

Why Do Vector Databases Re-Shard?

Why does growing tenant data force shard rebalancing in distributed vector databases, and which architectures avoid the problem entirely?

2 min readJuly 2026

The short answer

Databases re-shard because, in a stateful architecture, data lives on specific machines. When a tenant grows past its shard's capacity, or shards drift out of balance, the database must physically move vectors between nodes while serving traffic: double-writing during migration, rebuilding index structures on the destination, and eating I/O and CPU that queries needed.

Architectures that separate storage from compute don't have this problem: the corpus lives on object storage, query nodes are stateless caches over it, and a capacity change is a cache-warming event, not a data migration.

What triggers rebalancing?

Uneven growth triggers it. Hash-based placement balances document counts, not tenant sizes, so one customer 100× larger than the median concentrates load on whichever shards hold it. Add hardware and the new nodes are empty until data moves to them. Either way, the fix is migration, and migration is the risky operation.

Why is it so painful for vector indexes specifically?

It hurts because graph indexes don't move cheaply. An HNSW shard isn't a flat file you can stream to another node. Either you ship the graph and its memory footprint wholesale, or you re-insert vectors on the destination and pay the graph's insert-time construction cost for every vector at migration time. Both happen while the shard keeps serving queries, which is why rebalances show up as latency incidents and are scheduled like surgeries.

Which architectures avoid it entirely?

Storage-compute separation avoids it entirely. When the source of truth is object storage and query nodes hold only caches, "where data lives" stops being a per-node fact: any node can serve any partition by warming its cache. Scaling out is adding stateless readers; tenant growth is just more objects in storage (why object storage for vector search).

TopK's architecture is a concrete example of the pattern: executor nodes are "semi-ephemeral and fungible", and in principle any instance can handle requests for any collection. Collections are consistently assigned to executors purely for cache hit rates, not data ownership. Losing an executor loses neither data nor availability; the router just redistributes requests. There is no rebalancing operation because there is nothing to rebalance.

What should you ask a vendor?

One question exposes the architecture: "What happens operationally when one tenant grows 100×?" If the answer involves a migration plan, data lives on nodes. If it involves nothing, storage and compute are separated.

The 100× tenant question, answered by architecture.

Stateful shards

Tenant grows 100×

Migrate vectors between nodes

Rebuild graph on arrival

A scheduled surgery

Storage-compute separated

Tenant grows 100×

More objects in storage

Caches warm on demand

Nothing to rebalance

TopK is built storage-compute separated on object storage. The design rationale is in how we built a new search database from scratch.