TIL/Database
uuid vs auto increment PK 어떤걸 사용하는게 옳을까? <TIL_2022_08_11>
Dev_to_freedom
2022. 8. 11. 22:00
의문
카카오 등으로 소셜 로그인을 구현할때 서버(카카오) 자체에서 유저 고유의 값(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가 서로 충돌할 수 있다.