로딩
요청 처리 중입니다...

Guid.NewGuid()만 쓰던 나를 반성하며

 Guid.NewGuid()만 쓰던 나를 반성하며

(UUID v4, v5, v7을 정리해본 기록) 개발자라면 한 번쯤은 써봤을 Guid.NewGuid(). 저도 그랬습니다.

겹치지만 않으면 되는 값. 그 이상으로 생각해본 적은 거의 없었습니다.

그런데 DB를 의식하기 시작하면서 이 값이 조금 다르게 보이기 시작했습니다. 어느 순간 이런 생각이 들었습니다.

왜 PK가 점점 느려지지? 그제야 GUID를 그냥 난수 덩어리가 아니라 설계의 선택지로 보기 시작했습니다.

이번 글은 거창한 구현기라기보다는 UUID 버전들을 직접 뜯어보며 정리한 기록에 가깝습니다. v4 — 편하지만 무심한 선택 Guid.NewGuid()가 만들어내는 건 사실상 UUID v4입니다. 완전 랜덤입니다. var id = Guid.NewGuid(); 애플리케이션 입장에서는 거의 완벽합니다.

충돌 가능성 거의 없음 생성 빠름 어디서든 사용 가능 그래서 저도 아무 생각 없이 사용했습니다. 문제는 DB Primary Key로 사용할 때였습니다.

랜덤 값의 특성 때문에 이런 ...