2011-03-17 12 views
2

내 고객은 400,000 명이 넘는 고객의 데이터베이스를 보유하고 있습니다. 각 고객에게 GUID가 지정됩니다. 그는 모든 레코드를 선택하고이 GUID를 매개 변수로 포함하는 동적 인 "짧은 URL"을 만들길 원합니다. 그런 다음이 짧은 URL을 각 클라이언트 레코드의 필드에 저장하십시오.SQL 데이터베이스의 짧은 URL을 동적으로 생성 하시겠습니까?

첫 번째 질문은 URL 단축 사이트 중 하나를 사용하여 프로그래밍 방식으로 짧은 URL을 만들 수 있도록 허용하는 것입니다.

+0

귀하의 고객이 공개 단축키 (goo.gl, bit.ly 등) 중 하나를 통해 조회수를 리디렉션하는 것에 만족할 것이라고 생각하십니까? 리디렉터로 사용하지 않는 서비스를 통해 단축 URL을 생성 할 수 있다고 생각하지 않습니다. 어떤 이유에서든 자신의 단축 알고리즘을 구현할 수없고 대신 클라이언트 사이트에서 짧은 리디렉터를 실행할 수 있습니까? –

+0

대량 프로세스에서 400,000 번 공격 대상이 될 수도 있습니다! 당신이 그것을 정상적으로하고 4.5 일 이상 계속 걸릴 것 인 1 초를했지만, 그것을 빨리하는 것이 "비우호적"일 것입니다. –

답변

2

티니 URL은 예를 들어, (널리 문서화되지 않음)을 수행 할 수 :

http://tinyurl.com/api-create.php?url=http://www.stackoverflow.com/

http://tinyurl.com/6fqmtu 그래서 당신이 http://tinyurl.com/64dva66

http://tinyurl.com/api-create.php?url=http://mysite.com/user/xxxx-xxxx-xxxx-xxxx

을 가질 수됩니다.

는 GUID는 분명를 끝나게하지 않지만, URL은 당신이 HttpWebRequest를 통해이를 전달하고 응답을해야 할 것 독특한

주의해야한다. 사이트를 단축 알고리즘 URL을 사용

1

이 URL은 충분히 짧은되지 않습니다 :?

http://www.clientsdomain.com/?customer=267E7DDD-8D01-4F38-A3D8-DCBAA2179609

참고 : 개인적으로는 클라이언트가 이상한 뭔가를 요구하고있다 생각합니다. 결정적 알고리즘을 통해 고객의 GUID를 기반으로하는 각 고객 레코드에 URL 필드를 생성하라는 요청을함으로써 실제로 데이터베이스를 비정규 화하도록 요청하고 있습니다.

1

은 매우 간단합니다 :

  1. 스토어의 URL과는 일련 번호의에 매핑.
  2. 시퀀스 번호 (ID)를 고정 길이 문자열로 변환하십시오.

두 번째 단계에서 단지 여섯 개의 소문자를 사용하면 현재 응용 프로그램에 필요한 더 많은 (24^6) 조합을 얻을 수 있으며 특정 시점에 더 큰 순서의 사용을 방해하는 요소는 없습니다. 숫자 나 대문자를 허용하면 짧은 시퀀스를 사용할 수 있습니다.

변환 알고리즘은 (16 진수로 변환 할 때와 같은) 기본 변환이며, 0을 나타내는 기호가있는 모든 패딩이 사용됩니다.

LOWER = [chr(x + ord('a')) for x in range(25)] 
DIGITS = [chr(x + ord('0')) for x in range(10)] 
MAP = DIGITS + LOWER 

def i2text(i, l): 
     n = len(MAP) 
     result = '' 
     while i != 0: 
       c = i % n 
       result += MAP[c] 
       i //= n 
     padding = MAP[0]*l 
     return (padding+result)[-l:] 

print i2text(0,4) 
print i2text(1,4) 
print i2text(12,4) 
print i2text(36,4) 
print i2text(400000,4) 
print i2text(1600000,4) 

결과 :

0000 
0001 
000c 
0011 
kib9 
4b21 

귀하의 URL은 다음 양식 http://mydomain.com/myapp/short/kib9의 것이 변환에 대한 몇 가지 파이썬 코드입니다.

관련 문제