¿Cómo garantizan los acortadores de URL URL únicas cuando no caducan? [cerrado]

Hay muchas preguntas aquí en stackoverflow con respecto a los acortadores de URL, así como en otros lugares de Internet, por ejemplo.

¿Cómo codificar un acortador de URL?

¿Cómo calcula el acortador de URL la clave de URL? ¿Cómo trabajan?

http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html

Sin embargo, hay una cosa que no entiendo. Por ejemplo, http://goo.gl utiliza cuatro caracteres en este momento. Sin embargo, afirman que sus URL cortas no caducan. Como se mencionó en el artículo sobre codificación de horror, si no pueden reciclar las URL, la única solución posible es agregar un carácter adicional en un punto.

Bien, hasta ahora todo bien. Con 4 caracteres eso significa alrededor de 15 millones de direcciones únicas. Para algo como Google Maps, no creo que sea mucho y si no puedes reciclar, supongo que se quedan sin direcciones disponibles con bastante rapidez.

Ahora la parte que no entiendo. Mientras entregan direcciones, comienzan a quedarse sin direcciones sin usar. Deben verificar si aún no se ha emitido una dirección recién generada. La posibilidad de que esto haya sucedido y la dirección ya esté en uso aumenta. La solución sencilla, por supuesto, es generar una nueva URL una y otra vez hasta que encuentren una gratuita o hasta que hayan generado las 1.5 millones de alternativas. Sin embargo, seguramente no puede ser así como realmente lo hacen, porque consumiría demasiado tiempo. Entonces, ¿cómo manejan esto?

Además, es probable que haya varios visitantes a la vez que soliciten una URL corta, por lo que también deben estar sincronizados. Pero, ¿cómo se debe manejar la situación cuando se necesita agregar el quinto carácter?

Finalmente, al investigar un poco sobre cómo las URL de http://goo.gl trabajo, por supuesto, solicité una URL corta para un mapa en Google Maps varias veces. Ninguno de ellos será utilizado nunca. Sin embargo, cuando Google haría cumplir estrictamente la política de URL que no caducan una vez emitidas, esto significa que hay muchas URL inactivas en el sistema. Nuevamente, asumo que Google (y los otros servicios también) también han encontrado una solución a este problema. Me puedo imaginar un servicio de limpieza que recicle las URL que no hayan sido visitadas en las primeras 48 horas posteriores a la creación o menos de 10 veces en la primera semana. Espero que alguien pueda arrojar algo de luz sobre este tema también.

En resumen, entiendo el principio general de los acortadores de URL, pero veo varios problemas cuando estas URL no pueden caducar. ¿Alguien sabe cómo se pueden resolver los problemas mencionados anteriormente y hay otros problemas?


EDITAR

OK entonces este publicación de blog arroja algo de luz sobre las cosas. Estos servicios no generan nada aleatoriamente. Se basan en la funcionalidad de incremento automático de la base de datos subyacente y aplican una conversión simple en la identificación resultante. Eso elimina la necesidad de verificar si ya existe una identificación (no existe) y la base de datos maneja la sincronización. Eso todavía deja una de mis tres preguntas sin respuesta. ¿Cómo "saben" estos servicios si un enlace se usa realmente una vez creado?

preguntado el 04 de julio de 12 a las 10:07

Goo.gl actualmente usa 5 caracteres cuando lo pruebo, con mayúsculas y minúsculas y números. Esto parecería permitir 1,934,917,632 posibilidades (72 ^ 5) -

En Google Maps (donde lo probé), el acortador usa 4 caracteres. En goo.gl de hecho, también obtengo 5 caracteres. Pero esto todavía no es mucho en comparación con la cantidad de usuarios que obtienen diariamente, incluso si solo una fracción de ellos usa el servicio. Entonces, incluso con 5 caracteres, supongo que es probable que tengan problemas. -

CodeByMoonlight 04 de julio de 2012, 26*2 (casos bajos+arriba) + 10 (los dígitos tienen solo UN caso) = 62, NO 72, lo que hace que "solo" 916 millones de URL. -

1 Respuestas

Por qué los acortadores de URL no eliminan entradas

Escribí TinyURL (hace una década) para devolver una entrada que no necesitaba. Su respuesta me hizo darme cuenta de lo ridículo que era: me dijeron "solo crea todas las URL que necesites". Y las cifras hablan por sí solas:

A - Con 26 minúsculas + 26 letras mayúsculas + 10 dígitos (la elección de sitios razonables), el uso de UN carácter le brinda 62 posiciones (es decir, 62 URL acortadas), luego cada carácter adicional multiplica el número de posición por 62:

  • 0 caracteres = 1 URL
  • 1 caracteres = 62 URL
  • 2 caracteres = 3,844 (1 URL para cada humano en un pueblo)
  • 3 caracteres = 238,328 (ídem, en una ciudad)
  • 4 caracteres = 14,776,336 (en el área de Los Ángeles)
  • 5 caracteres = 916,132,832 XNUMX XNUMX (en América, N+Central+S)
  • 6 caracteres ~ 56,800,235,580 8 XNUMX XNUMX (XNUMX URL por cada ser humano en el mundo)
  • 7 caracteres ~ 3,521,614,606,000 (503 por cada humano, 4 por cada página web en el mundo)
  • 8 caracteres ~ 218,340,105,600,000 31,191 XNUMX XNUMX XNUMX (XNUMX XNUMX URL para cada ser humano)
  • 9 caracteres ~ 13,537,708,655,000,000 (~2 millones de URL por cada humano)
  • 10 caracteres ~ 839,299,365,900,000,000 (~120 mil millones de URL para cada ser humano)
  • 11 caracteres ~ 52,036,560,680,000,000,000 XNUMX XNUMX XNUMX XNUMX XNUMX XNUMX

B - En realidad las necesidades y usos son inferiores a lo que cabría esperar. Pocas personas están creando direcciones URL cortas y cada persona crea pocas direcciones URL. Las URL originales son suficientes en la mayoría de los casos. Los resultados son que los acortadores más populares, después de años, aún cubren las necesidades actuales con solo 4 o 5 caracteres, y agregar otro cuando sea necesario costará casi cero. Aparentemente, goo.gl y goo.gl/maps usan 5 caracteres cada uno, YouTube usa 11 (usando los 62 caracteres anteriores, más el guión y quizás algunos otros).

C: el costo de alojar (almacenar + operar) una URL es, digamos, $1000/año por 1 Terabyte, con cada TB capaz de contener 5 mil millones de URL, por lo tanto, 1 URL cuesta 0.2 microdólares/año en alojamiento. Sin embargo, el beneficio para el acortador también es muy pequeño, por lo que el negocio no es muy fuerte. Para el usuario, el beneficio de una URL es difícil de evaluar, sin embargo, un enlace perdido costaría mucho más que el alojamiento.

D: no tiene sentido que el usuario cree una URL corta si corre el riesgo de volverse inoperante en los próximos años, por lo que la persistencia es un atractivo importante de un Acortador, y un Acortador serio probablemente nunca dejará de servirle a menos que se le obligue. fuera del negocio; sin embargo, esto ya sucedió, y de todos modos, las URL cortas tienen muchos inconvenientes y beneficios, como se explica en Wikipedia "Acortamiento de URL" (riesgos de todo tipo de piratería, contra el usuario, los sitios de destino o el Acortador; por ejemplo, uno podría atacar a un Acortador solicitando un bot de giga-números de URL, una amenaza que la mayoría de los Acortadores seguramente rechazan).

Versalles, martes 12 de marzo de 2013 20:48:00 +0100, editado 21:01:25

contestado el 23 de mayo de 17 a las 13:05

Si bien estoy de acuerdo con sus números, significa que tienen que seguir aumentando la cantidad de caracteres. Supongo que 5 caracteres todavía son cortos, pero ¿se puede decir lo mismo de 10? En algún momento tendrán que aumentar a 10 u 11 caracteres si almacenan las URL de forma indefinida. ¿O hay otra solución que seguir aumentando los caracteres? - Pieter

@Pieter: Considere, por el bien del argumento: un grupo decide que quiere obtener todas las URL de 9 dígitos de TinyURL por alguna extraña razón. Se las arreglan para adquirir suficiente poder de cómputo para solicitar un millón de URL por segundo. (Ignore el hecho de que el servicio probablemente ni siquiera sería capaz de manejar tanto tráfico. Digamos que en nuestra realidad, dedican enormes cantidades de dinero para proporcionar URL cortas gratuitas. :)) Si acepta los números en la respuesta anterior , se necesitarían 13537708655 segundos (~429 años) para enviar suficientes solicitudes para agotar el espacio de URL y forzar una actualización a 10 dígitos. - chao

Hola, estoy programando un acortador de URL y tengo un problema. Un problema es que no podemos crear 6 chars cuando el usuario envió una solicitud de acortador de URL. Porque podría ser que creo al azar 6 chars y esto existe y usos más antiguos. Una forma es que creamos todos 6 chars y almacenado en la tabla. Cuando seleccione uno 6 chars de la tabla, elimine esta recodificación. Pero no puedo almacenar todo 6 chars en la base de datos porque tiene un tamaño pesado. ¿Hay un algoritmo para generar único 6 chars sin necesidad de buscar en URL shortener table para asegurarse de que no existe o se utiliza? Gracias. - mghhgm

Hola de nuevo. Encontré el mejor algoritmo para hacer esto: lalit.org/lab/… si su sistema operativo es de 32 bits, esta clase es compatible con menos de entero 214748364 y si su sistema operativo es de 64 bits, funciona bien para enteros inferiores a 9223372036854775807 😉 - mghhgm

Creo que diste buenos argumentos, pero tampoco respondiste realmente la pregunta. La pregunta en sí tiene una orientación más técnica y pregunta cómo los servicios de acortamiento previenen las colisiones de manera eficiente. - John Wu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.