List the key functional requirements for the system (Ask the AI for hints if stuck)...
List the key non-functional requirements (performance, scalability, reliability, etc.)...
Estimate the scale of the system. Consider daily active users, read/write ratio, storage requirements, bandwidth, and any relevant QPS calculations...
lets say 1million users -> each user may use 5 links in a day. 5 million requests per week -> ~800k queries per day. 30k queries per hour.
each user may make 1 link per week.
1:5 write/read.
Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Define the data model. Identify the main entities, their attributes, and relationships. Consider the choice of database type (SQL vs NoSQL) and justify your decision based on access patterns...
for this particular problem we can approach it with a nosql because the reads and writes are very consitent.
NoSql service
i have considered other table improvements but i dont think there is a simple way to boost the read write path as the read path is pretty versatile and unpredictable, no sharding is possible here.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.