UUID v4·ULID·Nil UUID의 차이
식별자는 레코드를 구분하기 위한 값입니다. 난수 기반 ID의 충돌 가능성은 작아도 0이라고 보장할 수 없으므로, 데이터베이스의 고유 제약과 충돌 처리도 필요합니다. 식별자를 안다는 이유만으로 자원에 접근할 수 있게 만들면 안 됩니다.
| 종류 | 표현 | 선택 기준 |
|---|---|---|
| UUID v4 | 36자, 16진수와 하이픈 | 시간 정보 없이 난수 기반으로 생성합니다. 기존 API가 UUID를 요구할 때 적합합니다. |
| ULID | 26자 Crockford Base32 | 앞부분에 밀리초 시각이 들어갑니다. 생성 시각 공개와 문자열 정렬 조건을 고려하세요. |
| Nil UUID | 00000000-0000-0000-0000-000000000000 | 값 없음을 나타내는 특수 값이며 매번 동일합니다. |
데이터베이스 저장 방식을 먼저 확인하세요
문자열·바이너리 타입, 키 길이, 인덱스와 쓰기 패턴에 따라 성능이 달라집니다. ULID로 바꾸면 항상 빠르다고 단정할 수 없습니다. 서비스에서 사용 중인 ID 타입과 직렬화 형식에 맞춰 테스트 데이터를 준비하세요.
형식 검사의 범위
UUID 검사에서는 일반 표기의 버전과 variant 위치를 확인하고, ULID에서는 허용 문자·길이·상한 범위를 확인합니다. 서버에서 발급된 값인지, 외부 데이터베이스에도 같은 값이 있는지는 확인하지 않습니다. UUID의 하이픈도 URL에서 사용할 수 있는 문자입니다.