Zum Inhalt springen
uencoder

Datenbank Sharding und Partitioning Referenz

Referenz für horizontal sharding, vertical partitioning, und distributed Datenbank strategies.

Partitioning Strategies

Horizontal partitioning (sharding) splits rows across nodes by a shard key. Vertical partitioning splits columns (e.g., hot columns separate from cold). Range partitioning assigns by key ranges (e.g., date ranges). Hash partitioning distributes by hash(key) for even distribution. List partitioning assigns by explicit key values. Composite partitioning combines strategies (e.g., hash then range). The shard key choice is critical and hard to change later. Cross-shard queries are expensive; design for shard-local access.

horizontal
Split rows
sharding
hash
Even distribution
hash(key) % N
range
Key ranges
date-based

Sharding Challenges

Distributed joins across shards are expensive or impossible. Distributed transactions require 2PC or Saga patterns. Rebalancing (adding/removing shards) requires data migration. Hotspots occur if shard key is uneven (e.g., all traffic to one shard). Secondary indexes are per-shard; global indexes add overhead. Consistency varies: strong (spanner, CockroachDB) vs eventual (Cassandra). Connection routing requires a shard-aware proxy or driver. Sharding is a last resort after vertical scaling, read replicas, and caching. Vitess, Citus, and CockroachDB provide sharding solutions.

cross-shard
Expensive joins
avoid
rebalance
Data migration
expensive
hotspot
Uneven distribution
bad shard key

Verwandte Tools

参考链接