Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为SQL数据库动态生成短URL?_Url_Short_Short Url - Fatal编程技术网

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

为SQL数据库动态生成短URL?,url,short,short-url,Url,Short,Short Url,我的客户拥有超过40万客户的数据库。为每个客户分配一个GUID。他希望我选择所有的记录,创建一个动态的“短URL”,其中包括这个GUID作为参数。然后将此短url保存到每个客户端记录上的字段 我的第一个问题是,是否有任何URL缩短网站允许您像这样通过编程动态创建短URL?您可以使用谷歌的URL缩短器,它们有一个API 以下是相关文档:此URL不够短: 注意:我个人认为你的客户要求的是一些奇怪的东西。通过要求您在每个客户记录上创建URL字段(通过确定性算法基于客户的GUID),他实际上是在要求您

我的客户拥有超过40万客户的数据库。为每个客户分配一个GUID。他希望我选择所有的记录,创建一个动态的“短URL”,其中包括这个GUID作为参数。然后将此短url保存到每个客户端记录上的字段


我的第一个问题是,是否有任何URL缩短网站允许您像这样通过编程动态创建短URL?

您可以使用谷歌的URL缩短器,它们有一个API


以下是相关文档:

此URL不够短:


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

TinyUrl允许您这样做(没有广泛的文档记录),例如:

变成

所以你本来可以

guid并没有那么清晰,但是URL应该是唯一的


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

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

  • 存储URL并将其映射到其序列号
  • 将序列号(id)转换为固定长度的字符串
  • 在第二步中仅使用六个小写字母将为您提供当前应用程序所需的更多(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
    

    您的URL将是这样的形式。

    您的客户是否满意通过一个公共短截器(goo.gl、bit.ly等)重定向他的点击?我认为他们不会让你通过他们的服务生成一个不使用他们作为重定向器的短URL。你为什么不能实现你自己的缩短算法并在客户端的站点上运行一个短重定向程序呢?他们也可能反对在批量过程中被点击400000次!如果你做得很优雅,每秒钟做一次,这会持续超过4.5天,但是做得更快是“不友好的”。