Вы создаёте таблицу tokens, в которой нужно хранить уникальные идентификаторы фиксированной длины (36 символов) для API-доступа. Какой тип данных наилучшим образом подходит для хранения этих значений?
Какой тип PostgreSQL выбрать для 36-символьного идентификатора?
Вы создаёте таблицу tokens, в которой нужно хранить уникальные идентификаторы фиксированной длины (36 символов) для API-доступа. Какой тип данных наилучшим образом подходит для хранения этих значений?
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Вы создаёте таблицу tokens, в которой нужно хранить уникальные идентификаторы фиксированной длины (36 символов) для API-доступа. Какой тип данных наилучшим образом подходит для хранения этих значений?
bytea
uuid
char(36)
varchar(36)
text
Решение
Если идентификаторы действительно имеют формат UUID, в PostgreSQL выбирают uuid. Одна длина 36 символов ещё не доказывает, что произвольная строка является UUID.
uuid хранит 128-битное значение и проверяет допустимый формат. Для произвольного 36-символьного токена подойдут text или varchar(36) с CHECK на точную длину; char(36) дополняется пробелами и обычно не даёт преимущества. Уникальность задают отдельным ограничением UNIQUE. Для секретов API также важно продумать безопасное хранение, а не считать тип данных защитой.