Skip to Content
Nextra 4.0 is released 🎉
DocumentationDesign A URL ShortenerUnderstand the Problem and Establish Design Scope

āĻāĻ•āϟāĻŋ URL āĻļāĻ°ā§āϟāύāĻžāϰ āĻĄāĻŋāϜāĻžāχāύ (Design A URL Shortener)

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāϏāĻŋāĻ• āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāω āĻĒā§āϰāĻļā§āύ⧇āϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻŦ: tinyurl-āĻāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ URL āĻļāĻ°ā§āϟāύāĻŋāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻžāĨ¤

āϧāĻžāĻĒ ā§§ - āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āĻŦā§‹āĻāĻž āĻāĻŦāĻ‚ āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āϏ⧁āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•ā§āώ⧇āĻ¤ā§āϰ (scope) āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž

āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāω āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āχāĻšā§āĻ›āĻžāĻ•ā§ƒāϤāĻ­āĻžāĻŦ⧇ āĻ“āĻĒ⧇āύ-āĻāĻ¨ā§āĻĄā§‡āĻĄ (open-ended) āϰāĻžāĻ–āĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āϏ⧁āϚāĻžāϰ⧁āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāϤ⧇, āĻ¸ā§āĻĒāĻˇā§āϟāĻŋāĻ•āϰāĻŖāĻŽā§‚āϞāĻ• āĻĒā§āϰāĻļā§āύ āĻ•āϰāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€: āφāĻĒāύāĻŋ āĻ•āĻŋ āĻāĻ•āϟāĻŋ URL āĻļāĻ°ā§āϟāύāĻžāϰ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ? āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϧāϰ⧇ āύāĻŋāύ URL https://www.systeminterview.com/q=chatsystem&c=loggedin&v=v3&l=long āĻšāϞ⧋ āĻ…āϰāĻŋāϜāĻŋāύāĻžāϞ URLāĨ¤ āφāĻĒāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϛ⧋āϟ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāϞāĻŋāϝāĻŧāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰ⧇: https://tinyurl.com/y7keocwjāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ…ā§āϝāĻžāϞāĻŋāϝāĻŧāĻžāϏāϟāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇āύ, āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻ…āϰāĻŋāϜāĻŋāύāĻžāϞ URL-āĻ āϰāĻŋāĻĄāĻžāχāϰ⧇āĻ•ā§āϟ āĻ•āϰāĻŦ⧇āĨ¤

āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€: āĻŸā§āϰāĻžāĻĢāĻŋāϕ⧇āϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻ•āϤ? āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ ā§§ā§Ļā§Ļ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ URL āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€: āĻļāĻ°ā§āϟ āĻ•āϰāĻž URL-āĻāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āϤ āĻšāĻŦ⧇? āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āϛ⧋āϟāĨ¤

āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€: āĻļāĻ°ā§āϟ āĻ•āϰāĻž URL-āĻ āϕ⧋āύ āϕ⧋āύ āĻ•ā§āϝāĻžāϰ⧇āĻ•ā§āϟāĻžāϰ āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ? āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āĻļāĻ°ā§āϟ āĻ•āϰāĻž URL-āĻ āϏāĻ‚āĻ–ā§āϝāĻž (0-9) āĻāĻŦāĻ‚ āĻ…āĻ•ā§āώāϰ (a-z, A-Z)-āĻāϰ āϏāĻ‚āĻŽāĻŋāĻļā§āϰāĻŖ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€: āĻļāĻ°ā§āϟ āĻ•āϰāĻž URL āĻ•āĻŋ āĻĄāĻŋāϞāĻŋāϟ āĻŦāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āϝāĻžāĻŦ⧇? āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ: āϏāϰāϞāϤāĻžāϰ āϜāĻ¨ā§āϝ, āϧāϰ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ• āĻļāĻ°ā§āϟ āĻ•āϰāĻž URL āĻĄāĻŋāϞāĻŋāϟ āĻŦāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻžāĨ¤

āĻāĻ–āĻžāύ⧇ āĻŽā§ŒāϞāĻŋāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞ⧋ (use cases) āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ⧋:

  • URL āĻļāĻ°ā§āϟāύāĻŋāĻ‚ (URL shortening): āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ URL āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ⧇ => āĻāĻ•āϟāĻŋ āĻ…āύ⧇āĻ• āϛ⧋āϟ URL āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻžāĨ¤
  • URL āϰāĻŋāĻĄāĻžāχāϰ⧇āĻ•ā§āϟāĻŋāĻ‚ (URL redirecting): āĻāĻ•āϟāĻŋ āϛ⧋āϟ URL āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ⧇ => āĻ…āϰāĻŋāϜāĻŋāύāĻžāϞ URL-āĻ āϰāĻŋāĻĄāĻžāχāϰ⧇āĻ•ā§āϟ āĻ•āϰāĻžāĨ¤
  • āωāĻšā§āϚ āĻĒā§āϰāĻžāĻĒā§āϝāϤāĻž (High availability), āĻ¸ā§āϕ⧇āϞ⧇āĻŦāĻŋāϞāĻŋāϟāĻŋ (scalability), āĻāĻŦāĻ‚ āĻĢāĻ˛ā§āϟ āϟāϞāĻžāϰ⧇āĻ¨ā§āϏ (fault tolerance) āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻžāĨ¤

āĻ–āϏāĻĄāĻŧāĻž āĻ…āύ⧁āĻŽāĻžāύ (Back of the envelope estimation)

  • āϰāĻžāχāϟ āĻ…āĻĒāĻžāϰ⧇āĻļāύ (Write operation): āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ ā§§ā§Ļā§Ļ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ URL āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
  • āĻĒā§āϰāϤāĻŋ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āϰāĻžāχāϟ āĻ…āĻĒāĻžāϰ⧇āĻļāύ: ā§§ā§Ļā§Ļ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ / ⧍ā§Ē / ā§Šā§Ŧā§Ļā§Ļ = ā§§ā§§ā§Ŧā§Ļ
  • āϰāĻŋāĻĄ āĻ…āĻĒāĻžāϰ⧇āĻļāύ (Read operation): āϧāϰ⧇ āύāĻŋāĻšā§āĻ›āĻŋ āϰāĻžāχāϟ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āϤ⧁āϞāύāĻžāϝāĻŧ āϰāĻŋāĻĄ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āĻ…āύ⧁āĻĒāĻžāϤ ā§§ā§Ļ:ā§§, āĻĒā§āϰāϤāĻŋ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āϰāĻŋāĻĄ āĻ…āĻĒāĻžāϰ⧇āĻļāύ: ā§§ā§§ā§Ŧā§Ļ * ā§§ā§Ļ = ā§§ā§§,ā§Ŧā§Ļā§Ļ
  • āϧāϰ⧇ āύāĻŋāĻšā§āĻ›āĻŋ URL āĻļāĻ°ā§āϟāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϟāĻŋ ā§§ā§Ļ āĻŦāĻ›āϰ āϧāϰ⧇ āϚāϞāĻŦ⧇, āĻāϰ āĻ…āĻ°ā§āĻĨ āĻšāϞ⧋ āφāĻŽāĻžāĻĻ⧇āϰ ā§§ā§Ļā§Ļ āĻŽāĻŋāϞāĻŋāϝāĻŧāύ * ā§Šā§Ŧā§Ģ * ā§§ā§Ļ = ā§Šā§Ŧā§Ģ āĻŦāĻŋāϞāĻŋāϝāĻŧāύ āϰ⧇āĻ•āĻ°ā§āĻĄ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  • āϧāϰ⧇ āύāĻŋāĻšā§āĻ›āĻŋ āĻ—āĻĄāĻŧ URL-āĻāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ā§§ā§Ļā§ĻāĨ¤
  • ā§§ā§Ļ āĻŦāĻ›āϰ⧇ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž: ā§Šā§Ŧā§Ģ āĻŦāĻŋāϞāĻŋāϝāĻŧāύ * ā§§ā§Ļā§Ļ āĻŦāĻžāχāϟ = ā§Šā§Ŧ.ā§Ģ TB

āφāĻĒāύāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻŋāωāϝāĻŧāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϧāĻžāϰāĻŖāĻž āĻāĻŦāĻ‚ āĻ—āĻŖāύāĻžāϗ⧁āϞ⧋ āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇ āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āĻ•āϰāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝāĻžāϤ⧇ āωāĻ­āϝāĻŧ⧇āχ āĻāĻ•āχ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ (same page) āĻĨāĻžāϕ⧇āύāĨ¤