Mostly, an application’s storage system has to do work only when users make requests to that application. However, there’s a difference between the work requested and the work that the storage system has to perform. A storage system does extra work as well, which is equally important.
It can help you find data quickly, recover data after a crash, or support concurrent transactions. But this extra work also has a cost. For example, the request might involve reading a small record, but it can require fetching many blocks of data.
Or when the user requests an update to some value, it can trigger multiple writes in the storage system. Also, if you want to keep the dataset highly available, it might require much more space than the actual size of the dataset. Read amplification, write amplification, and space amplification show the differences between logical work and physical cost.
In this article, we’re going to look at these differences in detail. Here’s what we will cover:
Source: ByteByteGo (system design interviews) — Read the full article on the original site ↗
