인프런

Primary Key 생성 전략

date
May 3, 2025
slug
large-scale-system-design-2
status
Public
tags
대규모 시스템 설계
author
summary
Primary Key 생성 전략을 비교
type
Post
thumbnail
updatedAt
May 3, 2025 04:51 AM
category
인프런

📝 강의 정리


Primary Key 생성 전략


[1]. DB Auto-Increment

장점

  • 간단하게 구현 가능하다.
    • 보안적인 문제를 고려하지 않아도 될 경우
    • 단일 DB나 애플리케이션 자체에서 PK 중복을 직접 구분하는 경우

단점

  • 분산 DB 환경에서 PK가 중복될 수 있기 때문에, 식별자의 유일성이 보장되지 않음
  • 클라이언트 측에 노출 시 보안에 취약
    • 방금 가입한 유저의 ID가 1000이라면 1000명의 사용자가 있다는 사실을 유추할 수 있다.
 
보안적인 문제만 염려된다면 다음처럼 사용하는 경우도 있다
  • PK는 DB 내에서의 식별자로만 사용
  • 애플리케이션에서 사용할 식별자를 위해 별도 유니크한 index를 사용
    • → DB에 unique 컬럼을 추가하고, 해당 값으로 애플리케이션 내에서 사용
  • 하지만 PK로 접근할 때는 Clustered Index로 생성되는 반면, 유니크 컬럼을 index로 생성하는 경우 Secondary Index로 생성되게 된다.
    • → 따라서, PK로 조회할 때 보다 조회 resource가 증가
      Clustererd Index VS Secondary Index
      정리 필요
 

[2]. 유니크 문자열 또는 숫자

장점

  • 키 생성 방식이 간단하다.

단점

  • 랜덤 데이터로 인해 성능 저하 가능성이 있다.
    • Clustered Index는 정렬된 상태를 유지한다.
    • 데이터 삽입이 필요한 인덱스 페이지가 가득 차게 되면 B+ tree 재구성 및 페이지 분할로 디스크 I/O 증가
    • PK를 이용한 범위 조회가 필요한 경우, 순차 I/O보다 성능이 저하
 

[3]. 유니크 정렬 문자열

장점

  • 분산 환경에 대한 PK 중복 문제 해결
  • 보안 문제 해결
  • 랜덤 데이터에 의한 성능 문제 해결
  • UUID v7, ULID 등의 알고리즘이 대표적이다.
 

단점

  • 데이터 크기에 따라, resource 효율이 달라진다.
    • Secondary Index는 PK 정보를 가지고 있다.
      • → PK가 크면 클수록 데이터가 더 많은 공간을 차지하고, 연산에 의한 resource가 커질 수 있다.
 
 

[4]. 유니크 정렬 숫자

장점

  • 분산 환경에 대한 PK 중복 문제 해결
  • 보안 문제 해결
  • 랜덤 데이터에 의한 성능 문제 해결
  • 문자열 방식보다 적은 공간을 사용한다.
  • snowflake, TSID 등의 알고리즘이 대표적이다.
 

단점

  • 정렬을 위해 타임스탬프를 나타내는 비트 수의 제한이 있다.
    • notion image
 
 

💡시스템의 특성 및 요구사항을 통해 적절한 PK 전략을 선택하자

 

📎 출처