전역에서 만들 수 있는 식별자
PostgreSQL에는 UUID 자료형이 있고 PG 13부터 gen_random_uuid()가 코어에 들어왔어. 이전 방식인 uuid-ossp도 알아둘 만해. PG 18부터는 두 번째 선택지인 uuidv7()도 쓸 수 있어. 그 이전 버전에서는 uuid-ossp나 별도 확장 기능을 검토해.
v4와 v7의 차이
v4는 122개의 무작위 비트로 충돌을 피하지만 B-tree 곳곳에 흩어져 들어가. v7은 48비트짜리 밀리초 단위 타임스탬프와 74비트의 무작위 값을 담아 전역 고유성을 유지하면서 시간순으로 모여.
내부 키와 공개 키를 나눌 수 있어
내부 JOIN에는 작은 IDENTITY 정수가 싸고, URL이나 API에는 UUID가 노출에 안전해. 두 열을 함께 두거나 UUID 기본 키를 써. 가능하면 시간 지역성이 있는 UUIDv7을 먼저 검토해.
PG 18에서 무작위 값이 필요하면 gen_random_uuid(), 시간 정렬이 필요하면 uuidv7()을 고르면 돼.