Создание идентификаторов для уникальности и референциальности URL-адресов
Вопрос
Мне нужно создавать объекты и делать их доступными в Интернете.Подобно stackoverflow, у меня есть что-то вроде.
http://stackoverflow.com/users/78374
Однако в моем случае идентификатор создаваемого объекта должен быть уникальным, поэтому я имею в виду UUID, ведущий к URL-адресу типа
http://example.com/users/{8e931066-7d87-4f2b-a3b5-608c4c9a9083}
потому что позже мне придется объединить разные базы данных, а я не хочу иметь проблем со слиянием.
Это общепринятая практика?Каковы альтернативы?
Решение
Если это просто вопрос слияния баз данных, присвоение каждой базе данных уникального идентификатора, а затем объединение его с PK с автоинкрементом даст уникальные идентификаторы для каждого объекта, который вы можете использовать, и не будете беспокоиться о проблемах слияния.
Другие советы
В этом нет никакой проблемы.Hotmail делает это.
Если слияние должно быть на 100% бесшовным, то UUID, вероятно, будет лучшим выбором.Если вы хотите создать более удобные для пользователя URL-адреса, вы можете рассмотреть возможность использования уникального «Имени учетной записи», которое может определить пользователь.Это потенциально может создать конфликты при слиянии баз данных, но их можно преодолеть.
Я согласен, что это приемлемая практика, поскольку она сохраняет уникальность идентификатора пользователя при его использовании в нескольких базах данных и приложениях.
Я использую ту же практику в своем блоке приложений для кэширования.Блок приложения кэширования генерирует GUID, когда элемент кэшируется, и приложение использует этот GUID для извлечения элемента из кэша.