인프런
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장점단점[2]. 유니크 문자열 또는 숫자장점단점[3]. 유니크 정렬 문자열장점단점[4]. 유니크 정렬 숫자장점단점💡시스템의 특성 및 요구사항을 통해 적절한 PK 전략을 선택하자📎 출처
📝 강의 정리
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 등의 알고리즘이 대표적이다.
단점
- 정렬을 위해 타임스탬프를 나타내는 비트 수의 제한이 있다.
