💡 개요
오늘은 데이터베이스의 테이블에서 사용되는 기본 키 중, String 즉, VARCHAR 형태의 기본 키에 대해 정리해 보자.
🛠️ VARCHAR 형태의 기본 키
VARCHAR 형태의 기본 키는 주로 UUID를 사용할 때 선택된다.
예를 들어, ORDER-20250419-001처럼 비즈니스적으로 의미 있는 ID를 키로 사용하거나, 전역적으로 유일해야 하는 ID를 관리할 때 유용하다.
UUID는 확률적으로 충돌 가능성이 거의 없어, 기본 키로 사용할 경우 고유성을 보장할 수 있다는 장점이 있다.
또한 사람이 읽기 쉬운 형태나 특정 규칙을 따르는 키를 생성할 수도 있어 활용도가 높다.
하지만 대부분의 테이블에서는 기본 키로 BIGINT(즉, Long) 타입의 숫자형 ID를 사용한다.
이 숫자형 ID는 정렬이 가능하고 조회 성능이 뛰어나며, 저장 공간도 더 효율적이라는 장점이 있다.
반면 VARCHAR 형태의 기본 키는 다음과 같은 단점이 있다.
- 조회 성능 저하
- VARCHAR는 정렬이 어렵고, 인덱스를 통한 빠른 검색에 불리하다.
- 저장 공간 증가
- 같은 수의 레코드라도, 문자열은 정수형보다 더 많은 저장 공간을 차지한다.
또한, 숫자형 ID는 순차적으로 증가하는 특성 때문에 클라이언트에게 그대로 노출될 경우 보안상 문제가 생길 수 있다.
이러한 이유로, 다음과 같은 방식이 추천된다.
기본 키는 BIGINT(숫자형)으로 유지하고, UUID를 별도의 컬럼으로 추가!
서버 내부 로직에서는 BIGINT 기본 키를 이용해 처리하고, 클라이언트에게는 UUID 값을 전달함으로써 보안성과 유일성을 동시에 확보하기!
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.04.21 - Docker 익명 볼륨 (0) | 2025.04.21 |
---|---|
[개발 일기] 2025.04.20 - Docker 포트 번호가 2개? (0) | 2025.04.20 |
[개발 일기] 2025.04.18 - DB 복합키 (0) | 2025.04.18 |
[개발 일기] 2025.04.17 - Cookie 요소 (0) | 2025.04.17 |
[개발 일기] 2025.04.16 - 클래스가 final로 선언되면 내부 필드도 변경이 안될까? (0) | 2025.04.16 |