반응형
- 자연키
- 비즈니스 모델에서 자연스럽게 나오는 속성
- ex : 회원 테이블에서, 회원 정보 중 '아이디' 속성을 자연키로 설정.
- 인조키
- 비즈니스 모델과 달리 오로지 키 역할을 하기 위해 인조적으로 만든 속성
- ex : UUID, Auto Increment
- UUID
- 테이블의 PK로 사용되는 고유 식별자.
- 16 Bytes의 문자로 구성.
- 유일을 보장하지 않음. '실질적으로 유일함'이 목적 ( 10^38 개의 경우의 수)
- 장점
- 개발 환경에 독립적.
- 분산 시스템에서 활용 가능.
- 단점
- 성능 저하. PK가 16바이트의 문자열이라면 데이터를 검색하거나 정렬할 때 소모되는 비용이 큼.
- 사람이 보기 불편함
- 메모리 공간 많이 차지
- Auto increment (Primary Key)
- 테이블의 PK로 사용되는 고유 식별자.
- 프로그램적으로 문제가 없는 한, 유일을 보장. (int형일 경우 -21억~21억 개의 경우의 수)
- 1부터 시작해서 숫자를 늘려가거나, 원하는 숫자의 식별자 생성.
- 장점
- 속도가 빠르다
- UUID에 비해 보기 쉬움
- UUID에 비해 공간 덜 차지.
- 단점
- 분산 시스템에 적합하지 않음. ( 두 개의 DB를 사용한다면 서로의 id값이 겹치는 상황 발생)
- 보안에 비교적 취약 ( 새 항목을 생성하고 해당 ID를 검사하면 테이블의 행 수가 노출.)
- 공간이 비교적 한정적 ( int일 경우 4 bytes, long일 경우 8 bytes)
- 자연키 vs 인조키
- 자연키는 변할 위험이 존재.
- 인조키는 변할 위험이 존재하지 x.
- 대부분의 상황에서 자연키보다 인조키 사용.
- 결론 : 인조키는 PK로, 자연키는 UK로 사용
[DevTip] UUID vs Auto Increment
UUID 는 간단하게 범용 고유 식별자라고 생각하면 편할것 같습니다.예를 들어 내가 뭔가 만들 때마다 식별할 수 있는 고유값을 만들고 싶다면 사용하면 됩니다.문서를 만들고 문서의 고유 식별자
velog.io
(14) PK 를 auto increment(자동 증가) 할 경우 생기는 문제점
PK 값을 DB 에서 부여해주는 그대로 1, 2, 3, 4... 와 같이 1씩 증가하는 PK 로 설정할 경우 몇가지 문제점이 발생한다. 1씩 증가하는 형식은 ID 의 앞 뒤로 다른 user 의 PK 값임을 쉽게 예측할 수 있으며
ssunw.tistory.com
반응형
'공부' 카테고리의 다른 글
로그 관리 (Logging) (1) | 2022.08.27 |
---|---|
웹 브라우저에서의 통신 방법 (Polling, Long Polling, Streaming, Socket) (1) | 2022.08.27 |
HTTP란? (0) | 2022.08.09 |
WAS vs Web Server (0) | 2022.08.09 |
API란? (0) | 2022.08.09 |