You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 스키마에서는 Article의 PK로 articleId를 사용하고 있다. 하지만 ApiSpec에서는 Article의 PK로 slug을 사용하고 있다.
따라서 slug을 articleId로 바꿔야하는 과정이 필요하다. 즉 query가 하나 더 필요해진다. 예를 들어 comment를 조회할 때 외래키인 articleId를 찾기 위해 slug을 통해 article을 조회하여 articleId를 찾아야하는 과정이 포함된다.
✨세부내용
현재 Article의 PK인 articleId는 AutoIncrement 속성을 가지고 있다. 현재 사용중인 mysql은 clustering 특성을 가지고 있다. 즉 새로운 article이 추가된다면 O(1)의 시간이 들게 된다. 하지만 slug으로 바꾸게 된다면 추가할 때마다 O(n) 시간이 필요해 진다.
하지만 articleId를 사용한다면, 문제 상황에서 언급한 것과 같이 조회할 때마다 query문이 하나 더 필요한 상황이 벌어진다. 따라서 조회를 생각한다면 slug을 이용한 방법이 더 효율적일 것이다.
✨결론 : PK로 slug을 설정하는 것이 더 효율적이다.
article 추가 시에는 articleId가 유리하지만, 조회 시에는 slug을 이용한 방법이 더 유리하다.
현재 프로젝트에서는 article 추가기능 보다 조회기능이 더 많이 호출 될 것이라고 예상된다. 따라서 Article의 PK를 slug으로 바꾸는 것이 더 효율적일 것이다.
📣 문제 상황 : Article의 PK와 APISpec의 PK에 차이가 존재한다.
✨세부내용
✨결론 : PK로 slug을 설정하는 것이 더 효율적이다.