sequence
в PostgreSQL прави точно същото като AUTOINCREMENT
в MySQL. sequence
е по-ефективен от uuid
защото е 8 байта вместо 16 за uuid
. Можете да използвате uuid
като първичен ключ, точно както повечето други типове данни.
Не виждам обаче как това се отнася до маскирането на потребителски идентификатор. Ако искате да маскирате идентификационния номер на определен потребител от други потребители, трябва внимателно да управлявате привилегиите на таблицата и/или да хеширате идентификатора, като използвате например md5()
.
Ако искате да защитите таблица с потребителски данни от подслушване на хакери, които се опитват да отгатнат други идентификатори, тогава uuid
тип е отличен избор. Пакет uuid-ossp
има няколко вкуса. Версия 4 е най-добрият избор, тъй като има 122 произволни бита (другите 6 се използват за идентифициране на версията). Можете да създадете първичен ключ по следния начин:
id uuid PRIMARY KEY DEFAULT uuid_generate_v4()
и тогава никога повече няма да се налага да се тревожите за това.
PostgreSQL 13+
Вече можете да използвате вградената функция gen_random_uuid()
за да получите произволен UUID на версия 4.