Storage:
average file size = 3 MB, metadata size = 256 Byte
20M * 3 MB = 60 TB/day
20M * 256B = 5 GB/day
for 2 years = * 365 * 2 = 42 PB
Bandwidth: write : read = 1:2
20M * 3M / (24*60*60) =
number of server
Storage * 1000 / 500 RPS
There are two kinds of data need to be store
MetaData
Client
Upload File:
Download File:
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Error Check
Network failure during the upload process would make chunks corrupt. The chunks can get corrupted even after being stored. it is important to make sure the chunk that is uploaded is correct.
Data Duplication
It is also important to replicate data for robustness
Each uploaded file should be replicated to one copy in the same data center and one copy in the same region and in a data center of another region in case of disaster. All of them should be stored as chunks with version numbers, so that only the lost or corrupted chunks can be brought back to production system.