this type of storage is very common in computer science.

we first learn about it through the maps or dicts, whichever data type the language supports.

in system design, we have this key-value databases. They are non-relational.

getting the sub-chapter titles from the book and we will go through them from memory

Requirements & Clarifications With Interviewer (Questions regarding what we wanna achieve)

What’s The Goal: we need to design a scalable key-value data store

What functionalities we need to support: get(key) & put(key,value)

How big can a piece of key-value store be at max: 8-10KB

How much and what data are we working with: it should support Big Data

What else do we need? High Scalability, High Availability, High Fault Tolerance, Tuneable Consistency, Low latency

Naive Solution

An intuitive and ‘quick fix’ would be to use an in-memory map on a single server. Of course that would ‘work’ only on a single server as in-memory data isn’t communicated with other servers. We define the map and store:

Why it doesn’t work? Because although we implemented those ☝️ techniques, there is very limited storage capacity compared to the needs of our application, and we can’t scale horizontally..