Как создать уникальный идентификатор на основе FirstName и LastName? - PullRequest
0 голосов
/ 02 октября 2018

Подобные вопросы уже задавались, но мой вопрос несколько отличается от некоторых исследований, проведенных над ним.
При регистрации на веб-сайте я предоставляю
FirstName : Ajay, LastName : Kumar
Теперь бэкэнд-API необходимо создать уникальный идентификатор из этих двух текстов.Почему?
Да, я использовал автоинкрементный столбец Integer для хранения идентификатора пользователя, но это Unique_id, который будет отображаться в URL страницы профиля пользователя, как большинство сайтов (fb, twitter,quora) делай.Я думаю, что это помогает в SEO для поиска профиля людей.

Подходы на мой взгляд:

1.FirstName + LastName + mysql-auto-Generated-ID
API не может знать автоматически сгенерированный идентификатор до создания пользователя.

2.Concat FirstName & LastName и использование его в качестве уникального идентификатора, если БД завершается с ошибкой и возвращает ошибку нарушения идентификатора, затем начинайте добавлять цифры, начиная с 0, пока не будет найден действительный идентификатор.
Увеличивает количество обращений к базе данных.

3.FirstName + LastName + [случайные целые числа]
Также увеличивает пошаговую передачу базы данных.

4.Используйте UUID, связанный с FirstName + LastName.
Поскольку UUID 128-битный, это довольно долго, и мне нужно его подстроковать.Это может привести к дублированию идентификаторов

5.объединяя текущую метку времени с FirstName + LastName.
Но это значение также довольно длинное.

Самый эффективный способ - использовать UUID и подстроку из него 4-5 начальных символов.Если уникальный идентификатор уже занят, попробуйте использовать другой UUID.Я думаю, что это лучше всего в случае уменьшения количества обращений к базе данных.

Мне интересно знать, как веб-сайты обрабатывают это (кроме рекурсивных вызовов этой базы данных, пока не будет найден действительный уникальный идентификатор)?В уникальном идентификаторе есть правильное распределение цифр (например, в Quora ).Например, tim-cook-1, time-cook-2.

Ответы [ 5 ]

0 голосов
/ 01 марта 2019

Вы можете использовать следующий генератор и выбрать, как долго должна быть ваша уникальная строка, которую вы добавляете к имени-фамилии- [uniquenumber]

https://alex7kom.github.io/nano-nanoid-cc/?alphabet=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ&size=8&speed=1000&speedUnit=second

Если вы делаете уникальнуюОграничение на это поле имя-фамилия- [уникальный номер] в базе данных позволяет обнаруживать столкновения, а затем просто заново генерировать уникальный номер.

0 голосов
/ 03 октября 2018

Я не вижу проблемы здесь.Сохраните объект, затем создайте URL-адрес из имени и уже существующего идентификатора и верните его клиенту.Вам даже не нужно хранить этот уникальный идентификатор отдельно, потому что вы можете легко создать его в любое время из трех других полей.

0 голосов
/ 02 октября 2018

UUID - хороший инструмент для использования.Вы также можете попробовать Крипто модуль при работе с node.js

0 голосов
/ 02 октября 2018

Я предполагаю, что вы используете MySQL.Вот возможное решение для одновременных запросов:

  1. создать таблицу (first_name, last_name, count)
  2. при получении нового запроса регистрации пользователя:

    • начать новую транзакцию
    • выдать select for update для этой таблицы
    • если строки нет, то count = 1 & insert;счетчик приращений else & update
    • commit
0 голосов
/ 02 октября 2018

Вы можете просто получить количество + 1 записи из базы данных, имеющей Firstname в качестве 'Arjun' и Lastname в качестве 'Kumar', а затем просто добавить к вашему имени пользователя

Это создаст имя пользователя в этом шаблоне

Арджун-Кумар-1

Арджун-Кумар-2

Арджун-Кумар-3

...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...