Let us assume our service will have the following usage patterns:
sequenceDiagram
participant Client
participant Service
participant Database
Client->>Service: Request to shorten URL
Service->>Database: Check if alias is available
alt Alias available
Database-->>Service: Confirm alias availability
Service-->>Client: Acknowledge alias availability
else Alias not available
Database-->>Service: Deny alias availability
Service-->>Client: Inform alias is taken, suggest alternatives
end
opt Client custom alias
Client->>Service: Request to use custom alias
Service->>Database: Check if custom alias is available
alt Custom alias available
Database-->>Service: Confirm custom alias availability
Service-->>Client: Acknowledge custom alias availability
else Custom alias not available
Database-->>Service: Deny custom alias availability
Service-->>Client: Inform custom alias is taken
end
end
Client->>Service: Request to access short URL
Service->>Database: Retrieve original URL
Database-->>Service: Original URL
Service-->>Client: Redirect to original URL
Using a NoSQL database for a URL shortening service has several advantages, making it a good choice for certain aspects of the system. Here are some reasons why a NoSQL database may be suitable for this scenario: