Hash-based sharding distributes data using a hash function on the shard key:
shard_id = hash(user_id) % num_shards
Advantages:
- Even data distribution across shards
- Simple to implement
- Works well for random access patterns
Disadvantages:
- Range queries require hitting all shards
- Adding shards requires rehashing (data migration)
Use hash sharding when you need uniform distribution and primarily query by exact key match. Avoid it if you frequently query ranges like "all orders from January."