动态生成SQL数据库的短URL?

时间:2011-03-17 22:03:12

标签: url short short-url

我的客户拥有超过400,000名客户的数据库。为每个客户分配一个GUID。他希望我选择所有记录,创建一个动态“短URL”,其中包含此GUID作为参数。然后将此短网址保存到每个客户记录的字段中。

我的第一个问题是,是否有任何网址缩短网站允许您以这种方式编程创建短网址?

4 个答案:

答案 0 :(得分:2)

TinyUrl允许你这样做(没有广泛记录),例如:

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

变为http://tinyurl.com/6fqmtu

所以你可以拥有

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

http://tinyurl.com/64dva66

guid最终没有那么明确,但URL应该是唯一的

请注意,您必须通过HTTPWebRequest传递此信息并获取响应。

答案 1 :(得分:1)

您可以使用Google的网址缩短版,它们有API。

以下是文档:http://code.google.com/apis/urlshortener/v1/getting_started.html

答案 2 :(得分:1)

此网址不够短:?

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

注意:我个人认为你的客户要求一些奇怪的东西。通过要求您在每个客户记录上创建一个URL字段(通过确定性算法将基于客户的GUID),他实际上主要是要求您对数据库进行非规范化。

答案 3 :(得分:1)

网站缩短网站使用的算法非常简单:

  1. 存储URL并将其映射到序列号。
  2. 将序列号(id)转换为固定长度的字符串。
  3. 第二步只使用六个小写字母将为您提供当前应用程序所需的更多(24 ^ 6)组合,并且没有什么能阻止在某个时间点使用更大的序列。如果允许使用数字和/或大写字母,则可以使用较短的序列。

    转换算法是基本转换(如转换为十六进制时),任何符号代表零填充。这是转换的一些Python代码:

    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
    

    您的网址格式为http://mydomain.com/myapp/short/kib9