피드로 돌아가기
Dev.toDatabase
원문 읽기
v4의 Index Fragmentation을 해결하는 v7 Timestamp 기반 PK 설계
How UUIDs Actually Work: v4 Randomness, v7 Timestamps, and the Collision Math
AI 요약
Context
B-tree 기반 Clustered Index를 사용하는 DB에서 v4 UUID의 Random Insert로 인한 Page Split 및 Cache Thrashing 발생. 분산 환경의 Unique ID 생성 필요성과 DB Write 성능 저하 사이의 Trade-off가 주요 병목 지점으로 작용함.
Technical Solution
- v7 UUID 도입을 통한 48-bit Unix Millisecond Timestamp 전치 설계
- Time-ordered Sequence 구현으로 Index Locality를 확보하여 Append-only에 가까운 Insert 패턴 유도
- 122-bit Randomness(v4 기준)를 유지하여 중앙 조정자 없는 분산 생성 환경 보장
- v1의 MAC address 노출 문제를 제거한 Timestamp + Randomness 조합으로 보안성 강화
- BINARY(16) 저장 방식을 통한 36-byte String 대비 16-byte 최적화 저장 구조 적용
- 예측 불가능성이 필요한 보안 토큰에는 v4를, PK에는 v7을 사용하는 용도별 분리 전략 수립
실천 포인트
1. DB Primary Key 설계 시 B-tree 인덱스 효율을 위해 UUID v7 검토
2. 보안 토큰 등 예측 불가능성이 필수적인 경우에만 UUID v4 사용
3. UUID 저장 시 문자열 형식이 아닌 BINARY(16) 타입 사용하여 저장 공간 55% 절감
4. 분산 ID 생성 시 Time-sortable 특성이 필요한지 여부에 따라 v4와 v7 선택