좋아요 개수 로직의 효율성

이동환·2023년 4월 25일
0

항해99

목록 보기
26/27

좋아요 로직을 구성하는 것과 관련한 고민을 해봤다.

항해99 과제 중 포스트 Read 시 각 포스트에 등록된 좋아요의 개수를 같이 구해와야 했다.

이 기능을 구현하는 두 가지 방식이 있었다.
1. join과 group by 등을 통해 각 포스트 별 좋아요 row 수를 COUNT 하기.
2. 포스트 테이블에 likes colum을 추가한 뒤 좋아요 시 그 수를 +1, 좋아요 취소 시 -1 하기.

처음 생각했을 때에도 2번 방식이 더 효율적일 것이라고 생각했는데 좋아요를 한 사용자가 탈퇴했을 때 외래키 조건이 CASCADE라서 좋아요 정보가 같이 삭제된다면 그 정보를 likes colum에 적용되야 할 것이라고 생각해서 1번 방식으로 구현했다.

그러나 다른 사람들과의 대화, 그리고 고민해 본 결과 2번이 더 나은 판단인 것 같다.

우선 삭제할 때 좋아요가 삭제되는 것이 기획에 없을 수도 있다.
있다고 하더라도 삭제 로직에 전체를 조회해서 줄여 줄 수도 있다.

유튜브처럼 사용자가 많은 서비스에서 구독자 수가 1억 명이 될 수도 있는 경우에는 1번 방식으로 row를 세서 가져오는 것은 거의 불가능 할 것 같다.
그래서 효율성 면에서 좋은 2번 방식을 더 많이 사용할 것 같다.

profile
개발을 즐기고 싶다.

0개의 댓글