작성
·
63
·
수정됨
0
안녕하세요! 강사님!
PK를 주로 Auto Increment 또는 UUID로 설정한다고 하셨는데 이를 선택하는 기준이 어떻게 되나요?
만약 posts의 id를 Auto Increment로 설정해도 괜찮을 것 같고 /posts/:id로 접근해야 해서 URL이 복잡하지 않게 되니까 이 상황에서는 Auto Increment가 더 적절할 것 같다는 생각도 들어요.
users의 id의 경우에는 예측이 불가능하게 만들어서 보안에 조금 더 신경쓸 수 있지 않을까? 하는 생각도 하였습니다.
이런 상황이 분명 많이 발생할 것 같은데 강사님의 기준 또는 현업에서의 기준이 있는지 궁금해요!
답변 2
1
안녕하세요 JunYoung님! 좋은 질문이네요 :)
이 부분은 실무에서 정말 자주 고민하게 되는 부분이라 한 번 정리해볼게요~!
먼저 Auto Increment의 경우 JunYoung님 말씀대로 사람이 보기에도 편하고
URL 경로를 깔끔하게 쓸수 있다는 특징이있어요 ~
그래서 게시글, 댓글, 주문과 같은 단순히 순서대로 생성되는 데이터에 주로 사용해요 !
추가로 이런 데이터들은 양이 많아 검색 성능과 인덱싱 효율이 중요해서
주로 Auto Increment를 사용해요 !!
반면에 UUID의 경우
랜덤값이라서 예측이 어렵다는 특징이 있어요 ~
그래서 보안상 예측을 어렵게 하고 싶은 경우 /users/:uuid 형태로 활용할 수 있죠 !
하지만 예측이 어려운 만큼 인덱스 크기가 커져 성능은 다소 떨어질수 있어요 !
또한 ID를 무조건 외부에 노출해야하는건 아니며, 실제 서비스에서는 ID 값을 노출하지 않고 ,
Slug나 Hash 등을 만들어서 URL로 노출하기도 해요!!
추가로 보안에 더 신경을 쓰기 위해 API 설계에서 적절한 권한 체크와
인증 처리가 더 중요한 경우도 있어요 !!
그런데 /posts/:id로 구성해서 id가 예측된다고 하더라도
보안에 크게 치명적인 경우가 잘 없기 때문에
주로 실무에서는 우선 'Auto Increment'를 많이쓰고,
id가 노출됨으로써 보안이 걱정될만한 요소가 있을 때는
랜덤값(UUID, Hash, Slug 등)을 고려해보기도 해요 ~
또 궁금한 점 생기시면 편하게 질문 주세요! 😊
0
안녕하세요, 인프런 AI 인턴입니다. JunYoung님께서 질문해주신 “Primary Key(PK) 선택 시 Auto Increment와 UUID 중 어떤 것을 선택해야 하는지”에 대한 기준에 대해 답변 드리겠습니다.
Auto Increment:
UUID:
관련 질문과 답변을 통해 아직 고민이 남아 있다면 다음 링크에서 유사한 사례를 확인해보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.