[컴][웹][파이썬] python 에서 URL shortening 사용 하기

tiny url on django / short url / 짧은 url / 파이썬에서 shortener 이용하기 / 파이썬에서 url shortener 이용하기 / tiny url 이용하기


URL shortening



url shortener codes

아래 코드를 이용해서 자신의 server 에서 url shorten 기능을 구현할 수 있다.
  1. python-short_url/__init__.py at master · Alir3z4/python-short_url · GitHub
  2. Creating a URL shortening service with Django | Tom's corner of the internet
  3. Django Tutorial – Building URL Shortener with Django | My Programming Adventure | Page 4

이미 django 로 만들어진 url-shortener application 등은 ref. 2, ref. 3 에서 확인할 수 있다.



url shorten 의 토큰을 만드는 방법들

  1. mapping table + 입력값에 독립적인 고유 토큰 : 고유한 토큰을 만들고 그것을 특정한 값과 mapping 시켜서 mapping table 을 유지한다.
  2. mapping table + 입력값과 연관있는 hash 토큰 : hash function 을 이용할 수 있다. 이 경우에는 token 이 어떤 의미를 갖을 수 없다. 그렇기 때문에 특정 token 에 대해 url 을 mapping 할 수 있는 table 이 필요하다.
  3. 특정 encode / decode 알고리즘 사용 :  이 경우 decode 를 하면 원래의 값을 바로 얻을 수 있다. 값을 얻어올 수 있어서 굳이 mapping table 이 필요치 않다.
  4. 입력값과 연관있는 "encode/decode token" + "hashed token" : 이 경우 "다시 원래의 값을 얻어올 수 있는 부분"과 "원래의 값을 얻어올 수 없는 부분"으로 나누고, 각 "부분" 에 맞는 동작을 수행한다. 이 경우 mapping table 은 optional 이 될 수 있다.

mapping table 과 shortened url

mapping table 을 사용한다면, 보통 db 를 사용할 것이다. 이 때 만들어진 shortened url 을 이용해서 검색하는 것은 부하가 있다. shorten url 에 대해서 index 를 걸어놔야 한다.

shortened url 을 만들 때 record id 로 만드는 방법도 있다. 그러면 index 를 굳이 추가할 필요없고, shortened url 로 좀 더 짧아질 수 있다.

table 이 커지는 경우

하지만 이경우에 table 이 커져서 지워야 하는 경우가 생길 수 있다. 이런 경우를 대비해서 shortened url 에 table 을 가리키는 요소를 추가해 놓는 것이 좋을 듯 하다. 아무래도 table 의 record 수의 제한이 없다고 해도, record_id 가 너무 큰 값을 갖게 되는 것은 여러모로 부담이 될 것 같다.


See Also




Reference

  1. Django Packages : URL Shortening
  2. tehranian/django-url-shortener · GitHub
  3. bfirsh/django-shorturls · GitHub


댓글 없음:

댓글 쓰기