Limits: hot tenants, isolation requirements, and configuration divergence
Payload-filter-based multitenancy works well when tenants are similar in size and access pattern, when the isolation requirement is logical, and when all tenants share the same collection configuration. It reaches its limits in four situations. First, a hot tenant: a tenant whose data or query volume is much larger than the others creates a hot shard and a noisy-neighbor problem. The payload filter does not help because all queries for that tenant hit the same shard, and the shard's resources are consumed by that tenant. Second, strict isolation: a tenant with a compliance requirement for physical isolation cannot be satisfied by a payload filter, because the data is on the same shard and the same node as other tenants. Third, configuration divergence: a tenant that needs a different embedding model, a different distance metric, a different HNSW configuration, or a different replication factor cannot be accommodated in a shared collection, because the configuration is collection-wide. Fourth, scale: a very large number of tenants (tens of thousands) with a long tail of small tenants and a few large ones makes the shared collection unbalanced, and the operational overhead of managing the tenants within one collection grows. At these points, the right move is to introduce dedicated shards (for the hot tenant, within the same collection) or dedicated collections (for the tenant that needs independent configuration or physical isolation).
The mechanism that determines when the shared model breaks is the distribution of tenant sizes and the resource model of the shard. A shard is the unit of resource allocation: its segments, its HNSW graph, its payload indexes, and its memory footprint are all shared by the tenants on that shard. If one tenant dominates the shard, the other tenants on that shard suffer. The payload filter isolates the data logically but not physically, so the noisy-neighbor effect is real. The threshold at which this becomes a problem depends on the size distribution: if the largest tenant is 10x the median, the shard imbalance is manageable; if it is 100x or 1000x, the hot shard becomes a bottleneck. The threshold for dedicated collections is different: a tenant needs a dedicated collection when its configuration must diverge (different model, metric, or HNSW config) or when its isolation requirement cannot be met by a filter. The threshold for dedicated shards is lower: a tenant can stay in the shared collection but get its own shard to avoid the noisy-neighbor effect. The two thresholds are independent: a tenant may need a dedicated shard without needing a dedicated collection, and vice versa.
Hot tenant: 100x-1000x the median size creates a hot shard and noisy-neighbor problems.
Strict isolation: physical isolation requirements cannot be met by a payload filter.
Configuration divergence: different model, metric, or HNSW config requires a separate collection.
Scale: thousands of tenants with a long tail unbalance the shared collection.
Dedicated shard: isolates the tenant's resources without changing the collection config.
Dedicated collection: gives the tenant independent configuration and physical isolation.
Thresholds: dedicated shard when the tenant dominates its shard; dedicated collection when config or isolation diverges.
Tiering: a tiered model (shared shard -> dedicated shard -> dedicated collection) handles the range.
The trade-off is between operational simplicity and tenant isolation. The shared collection is simpler but does not scale to extreme tenant distributions or strict isolation requirements. Dedicated shards and collections add operational overhead but address the limits. The common mistakes are: (1) keeping a 100x tenant in the shared collection and suffering the noisy-neighbor effect; (2) creating a dedicated collection for a tenant that only needs a dedicated shard, which adds unnecessary overhead; (3) not having thresholds, so the decision is made reactively during an incident; (4) not monitoring per-tenant resource usage, so the problem is detected late; (5) assuming the shared collection scales indefinitely, which it does not. Version note: custom sharding and the is_tenant flag have evolved across Qdrant releases. The practical threshold for the shared model depends on the version's optimizations and on the workload. Benchmark with your tenant distribution.
Version-dependent: custom sharding, the is_tenant flag, and the tiered multitenancy features have evolved across Qdrant releases. Verify the availability and behavior on your version, and benchmark with your tenant distribution.
One tenant is 100x larger than the others in your shared collection. Explain the problem and what you would do.
A tenant requires physical data isolation. Explain why a payload filter is not sufficient and what you would use.
You have 5000 tenants with a heavy-tailed size distribution. Describe the tiering strategy and the thresholds.
A tenant needs a different embedding model. Explain why they cannot stay in the shared collection and how you would migrate them.
Design a tiered multitenancy architecture with shared shards, dedicated shards, and dedicated collections, including the thresholds and the migration paths.
You need to reduce the cost of a multitenant deployment by consolidating small tenants. Describe the strategy and the trade-offs.
Derive the optimal tiering threshold as a function of tenant size distribution, query rate, and the cost of a dedicated shard or collection.
You are designing a multitenant platform that must support 100,000 tenants with varying sizes and isolation requirements. Describe the architecture.