본문 바로가기

TIL/Database

uuid vs auto increment PK 어떤걸 사용하는게 옳을까? <TIL_2022_08_11>

의문

카카오 등으로 소셜 로그인을 구현할때 서버(카카오) 자체에서 유저 고유의 값(userid)을 받아올 수 있는데, 이를 uuid처럼 아예 유저 테이블의 유일 PK값으로 사용할 수 있지 않을까? 

 

유저 테이블의 PK값으로 어떤걸 쓰는게 옳을까?

 

 

 

 

해결

소셜 로그인 기능이 포함된 서비스의 DB를 세팅할때 유저 테이블의 PK값으로 다음과 같은 두 가지를 고려할 수 있다.

 

1. uuid (유저 고유의 값을 암호화 함수에 넣어서 만든 암호값.)

2. Auto Increment Primary key (테이블 자체에서 자동 생성되도록 설정한 id값.)

 

두 가지 모두 각각의 장단점을 가지고 있다.

 

각자의 상황에 맞게 판단하여 사용하면 될 것 같다.

 

 

uuid

장점

- 서로 다른 데이터베이스나 테이블을 합칠때 용이하다. 각각의 id가 고유한 값을 가지기 때문에, 서로 다른 데이터끼리 합칠때도 id가 충돌나는 현상이 발생하지 않는다.

- 값 자체가 데이터에 대한 정보를 노출하지 않으므로 보안상 안전하다. (예컨대 auto increment pk가 유출될 경우 이를 통해 데이터의 수가 유추 가능)

 

단점

- 16바이트의 문자로 이루어지기 때문에 보안상 뛰어나지만, 그만큼 차지하는 용량이 크다. 이에 따른 성능 저하가 발생할 수 있다.

- 암호화된 값이라 사람이 보기 힘들다

 

 

auto increment pk

장점

- 빠르다

- 눈으로 보기 쉽다

 

단점

- 유출될 경우 위험할 수 있다

- 서버나 데이터를 합칠 경우 id가 서로 충돌할 수 있다.

 

 

'TIL > Database' 카테고리의 다른 글

mysql 1452 cannot add or update a child row ~ 에러 해결  (0) 2022.08.22