[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проектирование сервиса сокращения ссылок
Catzilla
Доброго времени суток, уважаемые форумчане smile.gif

Для внутренних нужд одного проекта хочу написать сервис сокращения ссылок (аналог u.to, goo.gl, и подобных).
Прошу вашей помощи в составлении подробного алгоритма работы, поскольку в некоторых аспектах мои мысли зашли в тупик.

Описание того, что хочу:

- идентификаторы вида: http://***.to/d2hG
- длина идентификатора должна самостоятельно увеличиваться по мере роста количества ссылок
- начальную длину идентификатора (от 1 символа и более) хорошо бы устанавливать в конфиге
- необходимо иметь возможность установить собственный текст в качестве идентификатора

В чем загвоздка:

1) Как обеспечить уникальность идентификаторов?
В голову приходит логичная мысль, использовать автоинкрементный ключ в БД, и каким-то образом преобразовывать его в строковое представление.
Подумал о использовании числа в виде HEX, но это не дает гибкости - набор символов ограничен 0-9A-F, регистр игнорируется.
Следующей мыслью было - использовать свой набор символов, сохранив принцип конвертации в 16-ричное представление, но это приводит к следующей проблеме:

2) Поскольку в своем наборе используется весь алфавит, есть существенный шанс, что однажды будет занято сокращение, которое потребуется использовать. Например, распространенное - vk, используемое для ссылки на официальную группу проекта, может быть занято очень и очень скоро.

3) Как при этом всем сделать возможность регулирования начальной длины сокращения? Ведь в описанном мной выше способе генерироваться будет всегда от начала, т.е. от 1-го символа.

Хотелось бы услышать ваши мысли на этот счет, и советы по разработке сего скрипта.
Заранее благодарен за ответы, и потраченное на чтение топика время smile.gif
Hello
Цитата (Catzilla @ 26.12.2014 - 03:14)
использовать автоинкрементный ключ в БД, и каким-то образом преобразовывать его в строковое представление.

ord

Цитата (Catzilla @ 26.12.2014 - 03:14)
есть существенный шанс, что однажды будет занято сокращение

№3 решает проблему

Цитата (Catzilla @ 26.12.2014 - 03:14)
Как при этом всем сделать возможность регулирования начальной длины сокращения?

Увеличить начальное значение автоинкремента

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.