Design a distributed key-value store that supports a deliberately small client-facing API: put(key, value) and get(key). Keys are unique, values are opaque blobs, and the system does not need range scans, secondary indexes, or multi-key transactions.
The store must scale from roughly 100 TB today to petabytes across hundreds of machines. Data therefore needs to be horizontally partitioned, replicated for fault…