·
Last changedVersion:
This version passed the hardening gate. Hardening applied 12 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 11. Review findings remaining: 2.
None
None
Expand | File | Group | Subtype | Severity | Status |
|---|
No findings available
0 findings
Vertical first: simpler operations, no network overhead, roughly good up to ~100M vectors per node as a rough guide that depends on workload, hardware, dimensions and quantization. Horizontal when: data exceeds single node capacity, need fault tolerance, need to isolate tenants, or IOPS-bound (more nodes = more independent IOPS).
replication_factor: 2 for zero-downtime scaling (3 shards is the minimal starting point; see Choosing number of shards for counts that divide evenly as the cluster grows)Minimum of 3 nodes is important for consensus and fault tolerance. With 3 nodes, you can lose 1 node without downtime. With 2 nodes, losing 1 node causes downtime for collection operations.
Replication factor of 2 means 2 total copies of each shard, placed on different nodes. This allows for zero-downtime scaling and maintenance. Availability also depends on the write and read consistency settings, losing one copy leaves a single copy until it is restored, and consensus needs a majority of nodes. With replication_factor: 1, zero-downtime is not guaranteed even for point-level operations, and cluster maintenance requires downtime.
Shards are the unit of data distribution. More shards allows more nodes and better distribution, but adds overhead. Fewer shards reduces overhead but limits horizontal scaling.
For cluster of 3-6 nodes the recommended shard count is 6-12. This allows for 2-4 shards per node, which balances distribution and overhead. Pick a shard count that divides evenly across the node counts you expect; for example, twelve shards divide evenly across three, four or six nodes.
Use when: shard count isn't evenly divisible by node count, causing uneven distribution, or need to rebalance.
Resharding is expensive and time-consuming, it should be used as a last resort if regular data distribution is not possible. Resharding is designed to be transparent for user operations, updates and searches should still work during resharding with some small performance impact.
But resharding operation itself is time-consuming and requires to move large amounts of data between nodes.
Better alternatives: over-provision shards initially, or spin up new cluster with correct config and migrate data.
When migrating to a new cluster: take snapshots of the source collections first, verify point counts and sample queries on the new cluster, switch traffic over in stages, and keep the old cluster until validation is complete.
shard_number that isn't a multiple of node count (uneven distribution of shard copies, including replicas)replication_factor: 1 in production if you need fault toleranceThis skill advises; the user runs the changes. Before shard moves, data migrations, or node or RAM changes on a production cluster, present the plan and get explicit user confirmation, check cluster health and replica status, take a snapshot or backup, move one shard at a time during low traffic, and monitor transfer progress.
Get started with chainctlchainctl skill install public/github/horizontal-scaling:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.chainreg.biz/public/github.com/github/skills/qdrant-scaling/scaling-data-volume/horizontal-scaling:latest
MIT
HARDENING.md
LICENSE
SKILL.md