To store user details, and the URL details - We can use a relational database for storing user details and a no SQL DB for the key-value pair - Key the long URL and value will be the shortened URL - We can use Dynamo DB or Cassandra
When the clients request for a tiny URL, it is sent to load balancers first to distribute the requests once the server is determined, the server creates a tiny URL using the creating service - which can use a hashing algorithm to create the tiny URL or takes in customizations and then stores it in NoSQL. If the client hits to get the existing tiny URL, it looks up into the cache, and if it doesn't find it will hit the database.
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
To come up with different algorithms like to append the digested value of user_id and to append it to the shortened URL