데이터베이스에서 각 레코드를 식별하는 기본키가 필요하다. 자동 증가 숫자보다 중복 위험이 없는 고유 식별자를 쓰고 싶다. UUID 생성기로 전 세계에서 유일한 ID를 만들 수 있다.
UUID란 무엇인가
UUID는 Universally Unique Identifier의 약자다. 128비트 길이의 고유 식별자로 550e8400-e29b-41d4-a716-446655440000 같은 형식이다. 전 세계 모든 시스템에서 동시에 생성해도 중복될 확률이 거의 0이다. 데이터베이스가 분산되어 있어도 ID 충돌 걱정 없이 사용할 수 있다.
UUID가 필요한 경우
데이터베이스 기본키로 자동 증가 숫자(1, 2, 3...)를 쓰면 다른 시스템과 데이터를 합칠 때 충돌이 생긴다. API 요청마다 고유 ID를 부여해서 로그를 추적할 때도 UUID가 좋다. 파일을 업로드할 때 파일명 중복을 피하려고 UUID를 붙이기도 한다.
UUID 버전
UUID에는 여러 버전이 있다. v1은 타임스탬프와 MAC 주소 기반, v4는 완전 랜덤 기반이다. comusin.kr/uuid-generator에서는 가장 많이 쓰이는 v4를 생성한다. v4는 예측 불가능해서 보안 측면에서도 유리하다.
대량 생성
테스트 데이터를 만들 때 UUID가 수백 개 필요할 수 있다. 생성 개수를 입력하면 한 번에 여러 개를 만들어준다. 결과를 TXT 파일로 다운로드할 수 있어서 바로 테스트 코드에 붙여넣을 수 있다.
출력 형식
용도에 따라 다양한 형식으로 출력할 수 있다. 하이픈 포함(표준 형식), 하이픈 제외(32자리 연속 문자), 대문자, 소문자, 중괄호 포함 등을 선택할 수 있다. 프로그래밍 언어나 데이터베이스에 따라 선호하는 형식이 다르다.
UUID의 구조
UUID는 8-4-4-4-12 형태로 하이픈으로 구분된다. v4의 경우 세 번째 그룹은 항상 4로 시작하고 네 번째 그룹은 8, 9, a, b 중 하나로 시작한다. 이 패턴으로 UUID 버전을 구분할 수 있다.
UUID vs 자동 증가 ID
자동 증가 ID는 순차적이라 다음 ID를 예측할 수 있다. 이는 보안상 좋지 않을 수 있다. 또한 데이터베이스가 여러 개면 ID가 겹친다. UUID는 이런 문제가 없지만 길이가 길고 인덱스 성능에 영향을 줄 수 있다. 상황에 맞게 선택해야 한다.
프로그래밍에서 UUID
대부분의 프로그래밍 언어에 UUID 생성 라이브러리가 있다. 자바스크립트는 crypto.randomUUID(), 파이썬은 uuid 모듈, 자바는 UUID.randomUUID()를 쓴다. 하지만 빠르게 몇 개 생성해서 테스트하고 싶을 때는 웹 도구가 편리하다.