Как укороченные URL-адреса гарантируют уникальные URL-адреса, если они не истекают?
Здесь много вопросов о stackoverflow относительно сокращений URL-адресов, а также в других местах в Интернете, например
Как закодировать URL-фильтр?
Как сократить URL-адрес URL-ключа? Как они работают?
http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html
Однако есть одна вещь, которую я не понимаю. Например, http://goo.gl использует четыре символа на данный момент. Однако они заявляют, что их короткие URL-адреса не истекают. Как упоминалось в статье о ужасе кодирования, если они не могут перерабатывать URL-адреса, единственное возможное решение в какой-то момент добавляет дополнительный символ.
Хорошо, пока все хорошо. С 4 символами, что означает около 15 миллионов уникальных адресов. Что-то вроде Google Maps, я не думаю, что это очень много, и если вы не можете перерабатывать, я предполагаю, что они быстро исчерпали доступные адреса.
Теперь для части, которую я не получаю. При раздаче адресов у них заканчиваются неиспользуемые адреса. Они должны проверить, не был ли еще недавно выпущен новый адрес. Шанс, что это произошло, и адрес уже используется. Разумеется, прямое решение состоит в том, чтобы создавать новый URL снова и снова, пока они не находят бесплатную или пока не будут созданы все 1.5 миллиона альтернатив. Однако это, конечно, не может быть так, как они это делают, потому что это будет слишком трудоемким. Итак, как им это удается?
Кроме того, есть, вероятно, несколько посетителей сразу же запрашивают короткий URL-адрес, поэтому они должны иметь некоторую синхронизацию. Но как управлять ситуацией, когда нужно добавить пятый символ?
Наконец, при проведении некоторых исследований о том, как работают URL-адреса из http://goo.gl, я, конечно же, запросил короткий URL-адрес для карты на Google Maps несколько раз. Ни один из них никогда не будет использоваться. Однако, когда Google строго соблюдает политику URL-адресов, которые не истекают после выдачи, это означает, что в системе имеется множество и бездействующих URL-адресов. Опять же, я полагаю, что Google (и другие сервисы) также придумали решение этой проблемы. Я мог представить себе очистку, которая перерабатывает URL-адреса, которые не были посещены в первые 48 часов после создания или менее 10 раз в течение первой недели. Я надеюсь, что кто-то может пролить свет на этот вопрос.
Короче говоря, я получаю общий принцип сокращения URL-адресов, но я вижу несколько проблем, когда эти URL-адреса не могут истечь. Кто-нибудь знает, как проблемы, упомянутые выше, могут быть решены и есть ли другие проблемы?
ИЗМЕНИТЬ
Хорошо, поэтому это сообщение в блоге проливает свет на вещи. Эти службы не произвольно не генерируют ничего. Они полагаются на базовые функции автоматического прироста базы данных и применяют простое преобразование в результирующий идентификатор. Это устраняет необходимость проверки того, существует ли идентификатор (он этого не делает), и база данных обрабатывает синхронизацию. Это все еще оставляет без ответа один из моих трех вопросов. Как эти службы "знают", если ссылка действительно используется после создания?
Ответы
Ответ 1
Почему сокращенные URL-адреса не удаляют записи
Я написал TinyURL (десять лет назад), чтобы вернуть запись, которая мне не нужна. Их ответ заставил меня понять, насколько я был смешон: они сказали мне "просто создайте все нужные вам URL". И сами цифры говорят:
A - с 26 строчными + 26 заглавными буквами + 10 цифр (выбор разумных сайтов) с использованием ОДНОГО символа дает вам 62 позиции (т.е. 62 сокращенных URL), затем каждый дополнительный char умножает номер позиции на 62:
- 0 char= 1 URL
- 1 char= 62 URL
- 2 chars = 3,844 (1 URL для каждого человека в деревне)
- 3 символа = 238 328 (idem, в городе)
- 4 символа = 14 776 336 (в районе Лос-Анджелеса).
- 5 символов = 916,132,832 (в Северной и Южной Америке, N + Центральная + S)
- 6 символов ~ 56,800,235,580 (8 URL-адресов для каждого человека в мире)
- 7 символов ~ 3,521,614,606,000 (503 для каждого человека, 4 для каждой веб-страницы в мире).
- 8 символов ~ 218 340 405 000 000 (31 191 URL для каждого человека)
- 9 символов ~ 13 537 708 655 000 000 (~ 2 миллиона URL-адресов для каждого человека)
- 10 символов ~ 839,299,365,900,000,000 (~ 120 миллиардов URL для каждого человека)
- 11 символов ~ 52 036 560 680 000 000 000
B - На самом деле потребности и использование ниже, чем можно было ожидать. Мало кто создает короткие URL-адреса, и каждый человек создает несколько URL-адресов. Исходных URL-адресов в большинстве случаев достаточно. Результаты состоят в том, что самые популярные укороченные, спустя годы, по-прежнему покрывают потребности сегодня всего лишь 4 или 5 символов, а добавление другого при необходимости будет стоить почти нулевое. По-видимому, goo.gl и goo.gl/maps каждый используют 5 символов, youtube использует 11 (используя 62 символа выше, плюс тире и, возможно, несколько других).
C. Стоимость хостинга (хранения + работы) URL-адреса составляет, скажем, 1000 долларов США в год за 1 терабайт, причем каждый TB способен содержать 5 миллиардов URL-адресов, поэтому 1 URL-адрес стоит 0,2 микро-доллара в год на хостинге. Однако преимущество для Shortener также очень тонкое, из-за чего бизнес не очень сильный. Для пользователя трудно оценить URL-адрес, однако пропущенная ссылка будет стоить гораздо больше, чем хостинг.
D - Нет смысла создавать короткий URL-адрес, если он рискует стать неработоспособным в ближайшие годы, поэтому настойчивость является главной привлекательностью Shortener, и серьезный Shortener, вероятно, никогда не перестанет обслуживать их, если они вынуждены покинуть бизнес; но это уже произошло, и в любом случае у коротких URL-адресов есть свои недостатки и преимущества, также объясненные в Википедия "Сокращение URL" (риски из всех видов взлома, против пользователя или целевых сайтов или Shortener, например, можно атаковать Shortener с помощью бот-запросов на гигабитные числа URL-адресов, что, вероятно, сильно повлияло на большинство сокращений).
Версаль, вт 12 марта 2013 20:48:00 +0100, отредактирован 21:01:25