Surrogate Key Strategy
분산 환경의 키는 유일성, 생성 위치, 정렬성을 함께 고려한다
AUTO_INCREMENT는 단순하고, UUID v4는 독립 생성에 강합니다. 시간 기반 ID는 생성 시각을 앞쪽에 두어 정렬성과 분산 생성을 함께 노립니다.
time prefix + collision guard + randomness/sequence
Time
앞부분에 생성 시각을 둔다
문자열 또는 숫자 정렬만 해도 대략 생성 순서가 맞습니다.
Guard
동시 생성 충돌을 줄인다
Snowflake는 worker/sequence, ULID는 randomness로 충돌을
낮춥니다.
Index
인덱스 지역성을 개선한다
완전 랜덤 UUID보다 새 값이 가까운 위치에 들어가기 쉽습니다.
AUTO_INCREMENT
단일 DB에서는 빠르고 단순하지만, 여러 노드가 독립 생성하기 어렵습니다.
UUID v4
어디서든 만들 수 있지만 랜덤성이 커서 시간순 정렬과 인덱스 지역성이 약합니다.
ULID / Snowflake / UUIDv7
시간 정보를 포함해 분산 생성과 정렬성을 절충하는 선택지입니다.