UUID와 Long으로 기본키를 작성할 경우 차이점

haruceki·2024년 8월 26일

UUID

전역적으로 고유한 값으로, 거의 무한에 가까운 조합을 가지기 때문에 동일한 값이 생성될 확률이 매우 낮다.

장점

  1. 분산 시스템이나 여러 서버에서 동시에 생성해도 중복될 가능성이 거의 없다.
  2. 예측이 불가능한 무작위 값이므로, 보안 측면에서 더 안전하다. 직접적으로 추정하거나 예측하기 어렵기 때문에, 외부에서 접근하기 어렵다.

단점

  1. 28비트(16바이트) 크기로, 데이터베이스에 저장될 때 더 많은 공간을 차지하며, 인덱스 크기나 쿼리 성능에 영향을 줄 수 있다.
  2. 인덱싱에 불리하다.
  3. 사람이 읽거나 기억하기 어렵습니다. 긴 문자열이기 때문에 URL에 포함시키거나 수동으로 입력하는 데 불편함이 있습니다.

=> 분산 시스템, 클라우드 기반 애플리케이션, 고유성 보장이 중요한 경우(예: 글로벌 ID) 등에 적합하다.

Long

주로 64비트 정수 값으로, 특정 데이터베이스나 시스템 내에서 고유성을 보장한다.

장점

  1. 64비트(8바이트) 크기로, UUID보다 절반의 크기이므로 저장 공간이 더 적게 필요하고, 인덱싱 및 검색 성능이 일반적으로 더 좋다.
  2. 인덱스 성능이 좋고 인덱스 조각화도 적다.
  3. 상대적으로 짧고 숫자로만 이루어져 있어, 사람이 읽거나 기억하기 쉽고, URL에 포함시키거나 수동으로 입력하는 데 더 편리하다.

단점

  1. 전역적으로 고유하지 않으며, 보통 순차적으로 생성되기 때문에 여러 시스템에서 동시에 생성할 경우 충돌할 가능성이 있다.
  2. 값이 순차적으로 증가하므로, 다음에 생성될 ID를 추측할 수 있다. 따라서 보안상 UUID보다 취약할 수 있다.

=> 단일 데이터베이스 시스템, 고성능이 중요한 경우, ID가 순차적으로 증가하는 것을 활용하는 비즈니스 로직 등에 적합하다.

profile
희망도 절망도 없이 매일 코딩을 한다.

0개의 댓글