Design: Shard Key Selection for Distributed Database
Design focuses on selecting an optimal shard key and its impact on data distribution, query efficiency, and scalability. It excludes detailed shard rebalancing algorithms and physical hardware setup.
Functional Requirements
FR1: Distribute data evenly across multiple database shards
FR2: Support efficient query routing to minimize cross-shard queries
FR3: Maintain high availability and fault tolerance
FR4: Allow scalability to handle up to 1 billion records
FR5: Support common query patterns such as point lookups and range queries
Non-Functional Requirements
NFR1: Shard key must minimize data skew and hotspots
NFR2: Latency for queries should be under 200ms p99
NFR3: System should tolerate shard failures without data loss
NFR4: Shard key selection should not require frequent re-sharding
NFR5: Support strong consistency within a shard