20210927(42Sof 게시글 리스트 조회)

1. 전체 학습시간

오후 01:00 ~ 오후 04:30

2. 학습 목표

42StackOverFlow 기능 구현 및 게시글 리스트가 어떤 데이터가 필요하고 어떻게 구현할지 생각하기

3. 학습 방법

하인호, 김나연 ,정예나 42서울 동료들과 의논
집중도를 높여보기 위해 온라인 클러스터 참여

4. 다음 학습 목표

메인 페이지 API 코드 구현

5. 상세 학습 내용

메인 페이지 API 계획

  • 필요하다고 생각되는 데이터
    -> 질문 게시글 리스트, 테그, 작성자명 데이터, 채택 여부, 좋아요 수, 조회수

화면 예시 (Figma)

  • 해결방안 1) (O)
    Question 테이블에 답변 횟수, 추천 횟수, 조회 횟수 컬럼을 추가하는 등의 RDBMS만으로 해결
    -> 게시글을 작성할때 또 어떠한 로직을 거쳐서 답변 횟수, 추천 횟수, 조회 횟수를 계속 Update 해줘야함
  • 해결방안 2) (X)
    Redis를 사용해서 해결
    -> 게시글을 작성할 때 삭제할 때 어떠한 로직을 거쳐서 Redis 저장소에 Set 형태로 저장해주자.
    Redis에 대해 개념이 없기에 찾아서 공부해야함

잦은 트랜잭션 예상 순위

1. 조회수 게시물 보기 (insert)
2. 조회수 갱신 (select)
3. 좋아요 갯수 가져오기(select)
4. 좋아요 누르기(insert)
5. 답변 갯수 가져오기 (select)
6. 채택 여부 확인하기 (select)

해결 방안 채택

해결 방안 1)

  • 채택이유
    RDBMS로 구현해보고 서버오류나 에러가 발생한다면 Redis를 도입해보자

구현할 기능들을 대략적으로 정리

  • 메인 페이지

    • 좋아요 Count (RDBMS)
      questionLike(다대다) questionLike.isLike 컬럼에 true
      -> question.좋아요 count 컬럼 ++;

    • 조회 Count (RDBMS)
      질문테이블에 조회수 컬럼 추가 페이지 조회시 해당 쿠키에 저장되어 있는
      question.views

    • 채택 Checking (RDBMS)
      질문테이블에 채택 여부 컬럼 추가

    • 답변 Count (RDBMS)
      질문테이블에 답변의 갯수 컬럼 추가

  • 상세 페이지

    • 좋아요 Count (RDBMS)
    • 좋아요 Checking (RDBMS)

테이블 설계


6. 실수한 점

테이블 설계를 잘못한거 같다. 질문(Question, Answer)테이블과 좋아요(Like) 테이블 관계가 다대다 가아니고 일대다이다. 다시 원점으로 돌아가서 설계해보자

좋은 웹페이지 즐겨찾기