공부

자연키(Natural Key) vs 인조키(Artificial Key)

항성 2022. 8. 10. 16:29
반응형
  • 자연키
    • 비즈니스 모델에서 자연스럽게 나오는 속성
    • 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