피드로 돌아가기
No wall clock required: a 64-bit ID generator from a counter + reversible permutation
Dev.toDev.to
Backend

Wall Clock 제거한 Reversible Permutation 기반 64-bit ID 생성 설계

No wall clock required: a 64-bit ID generator from a counter + reversible permutation

erickh8262026년 4월 13일23advanced

Context

기존 Auto-increment의 비즈니스 데이터 유출 문제와 UUID v4의 B+ Tree 인덱스 성능 저하 및 128-bit 공간 낭비를 해결해야 하는 상황. Snowflake 계열의 Timestamp 기반 ID는 NTP 동기화 오류나 VM 일시 정지로 인한 Clock Rollback 시 중복 ID 발생 위험이 상존하는 한계점 보유.

Technical Solution

  • Persistent Counter 기반의 단조 증가 시퀀스를 통해 Wall Clock 의존성을 완전히 제거한 유일성 보장 구조 설계
  • Source → Layout → Permutation으로 이어지는 3단계 파이프라인을 통한 ID 생성 프로세스 구축
  • 16-bit Shard ID와 48-bit Sequence를 결합한 Layout 구성을 통한 분산 환경 대응
  • Reversible Permutation(Bijection) 적용으로 외부에는 Random-looking ID를 노출하면서 내부적으로는 원래의 메타데이터 복원이 가능한 구조 구현
  • 가역적 매핑 함수를 통해 별도의 저장소 조회 없이 ID 자체에서 Instance ID와 Sequence를 추출하는 Decode 기능 제공

1. 비즈니스 성장률 노출 방지가 필요한 경우 단순 시퀀스 대신 가역적 치환 함수(Permutation) 도입 검토

2. 분산 시스템에서 Clock Skew로 인한 ID 중복 가능성이 치명적이라면 Timestamp-free 설계 고려

3. DB 인덱스 성능 최적화를 위해 완전 랜덤 ID보다는 적절한 정렬성을 갖거나 크기가 제한된 64-bit ID 채택

원문 읽기