Design: Storage Selection for Scalable Systems
Focus on selecting storage types and explaining their impact on system design. Out of scope: detailed implementation of storage engines or hardware specifics.
Functional Requirements
FR1: Store and retrieve data efficiently based on use case
FR2: Support different data types: structured, semi-structured, unstructured
FR3: Ensure data durability and availability
FR4: Handle expected read and write loads
FR5: Provide appropriate latency for user experience
FR6: Support data consistency needs
FR7: Allow scaling as data and traffic grow
Non-Functional Requirements
NFR1: System must handle up to 1 million requests per second
NFR2: Latency for read operations should be under 100ms p99
NFR3: Availability target of 99.9% uptime
NFR4: Data size expected to grow to multiple terabytes
NFR5: Budget constraints limit use of very expensive storage solutions