A scalable key-value store typically includes clients to send requests, a load balancer to distribute them, a cache for fast access, storage nodes for persistent data, and a metadata service to track data locations.
Replicating data across multiple storage nodes allows read requests to be distributed, improving read throughput and reducing latency.
Eventual consistency with asynchronous replication allows the system to remain available and tolerate network partitions, which is important for global systems.
The client sends the request to the load balancer, which forwards it to the cache. If the cache misses, the storage node is queried. The storage node returns the value to the cache and then to the client.
Raw data per key-value pair: 32 + 256 = 288 bytes. For 1 billion keys: 288 × 1,000,000,000 = 288 GB. With 3 replicas: 288 GB × 3 = 864 GB. Including 20% overhead: 864 GB × 1.2 ≈ 1,037 GB ≈ 1.1 TB.
