Not sure
A shortening service (shortens the long url) and a posting service (returns back the long url from the saved short url)
DynamoDB database that stores key values
Key = short url
value = long url
We can keep some metadata like userID (int) and clicks (int) for some future analysis
I chose a NoSQL database due to its TTL functionality where we can ask it to delete key/values daily once it has reached 6 months.
User/client provides long url
Server should reference two services: shortening url service and posting service.
When the URL is shortened it is stored in a noSQL database.
When the short URL is used by the client again, it will check against the DB to return back the long url & complete the job.
Its in the diagram
Given the high volume of requests, we need to scale to have a pool of servers or pool of databases.
For frequently visited short URLs, we might implement caches if our website gets popular enough.
People may get the same short URL back as we didnt build for checks of that nature here.
Include an additional database (relational) so we can ensure different users do not get the same shortened URL.