Skip to content

Article의 PK. articleId와 slug 차이 #30

@hyukji

Description

@hyukji

📣 문제 상황 : Article의 PK와 APISpec의 PK에 차이가 존재한다.

  • 현재 스키마에서는 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으로 바꾸는 것이 더 효율적일 것이다.

Metadata

Metadata

Labels

refactor리팩토링과 관련된 사항

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions