URL shortening
url shortener codes
아래 코드를 이용해서 자신의 server 에서 url shorten 기능을 구현할 수 있다.- python-short_url/__init__.py at master · Alir3z4/python-short_url · GitHub
- Creating a URL shortening service with Django | Tom's corner of the internet
- Django Tutorial – Building URL Shortener with Django | My Programming Adventure | Page 4
이미 django 로 만들어진 url-shortener application 등은 ref. 2, ref. 3 에서 확인할 수 있다.
url shorten 의 토큰을 만드는 방법들
- mapping table + 입력값에 독립적인 고유 토큰 : 고유한 토큰을 만들고 그것을 특정한 값과 mapping 시켜서 mapping table 을 유지한다.
- mapping table + 입력값과 연관있는 hash 토큰 : hash function 을 이용할 수 있다. 이 경우에는 token 이 어떤 의미를 갖을 수 없다. 그렇기 때문에 특정 token 에 대해 url 을 mapping 할 수 있는 table 이 필요하다.
- 특정 encode / decode 알고리즘 사용 : 이 경우 decode 를 하면 원래의 값을 바로 얻을 수 있다. 값을 얻어올 수 있어서 굳이 mapping table 이 필요치 않다.
- 입력값과 연관있는 "encode/decode token" + "hashed token" : 이 경우 "다시 원래의 값을 얻어올 수 있는 부분"과 "원래의 값을 얻어올 수 없는 부분"으로 나누고, 각 "부분" 에 맞는 동작을 수행한다. 이 경우 mapping table 은 optional 이 될 수 있다.
mapping table 과 shortened url
mapping table 을 사용한다면, 보통 db 를 사용할 것이다.shortened url 을 만들 때 record id 로 만드는 방법도 있다. 그러면 index 를 굳이 추가할 필요없고, shortened url 로 좀 더 짧아질 수 있다.
- url -> number(record id) -> shortened url
- algorithm - How to code a URL shortener? - Stack Overflow
- How to design a tiny URL or URL shortener? - GeeksforGeeks
table 이 커지는 경우
하지만 이경우에 table 이 커져서 지워야 하는 경우가 생길 수 있다. 이런 경우를 대비해서 shortened url 에 table 을 가리키는 요소를 추가해 놓는 것이 좋을 듯 하다. 아무래도 table 의 record 수의 제한이 없다고 해도, record_id 가 너무 큰 값을 갖게 되는 것은 여러모로 부담이 될 것 같다.See Also
Reference
- Django Packages : URL Shortening
- tehranian/django-url-shortener · GitHub
- bfirsh/django-shorturls · GitHub
댓글 없음:
댓글 쓰기