less than 1 minute read


kakaopay 2021 코테 응시

private log

pseudo

유저 정보 변경 기능 및 프로필 정보 확인

현재 프로필 페이지에서 확인 가능한 정보:

  • 한 줄 소개 (편집)
  • 지역 (편집)
  • 메일 주소 (편집)
  • 요약 탭
    • 현재 랭크
    • 최대 랭크
    • 전체 활성 유저수(of xxx)
    • 팔로우 대상 (스터디?)
      • 타이틀
      • 한줄설명
      • 팔로워 수
    • 활동 다이어그램 (Post,Vote,Comment,Study Group,Answer,Question)
    • 활동 캘린더 (일자별 활동수)
  • 포스트 탭
    • 포스트 목록 & 페이지네이션
      • 포스트:
  • Q\&A 탭
  • Rank 탭
  • Bookmarks 탭

각 유저의 랭크는 포인트에 기반할 것이며, 실시간으로 업데이트될 필요는 없다. 통계 컬렉션을 따로 두어 주기적으로 계산되도록 하는게 좋을 듯하다.

공식 문서에 따르면, 두 가지 방법이 있다.

두 스키마를 레퍼런스로 연결하거나, 한 스키마가 다른 스키마를 포함하도록 저장하는 방법이 있다고 한다. 가능하면 후자가 성능(읽기 등)에 좋다는 듯하다. 그렇다면, 정보를 따로 가지는 스키마와, 표시용으로 모든 정보를 가지는 문서를 따로 두어서, 스키마마다 다른 주기로 (실시간/주기) 표시 문서에 업데이트시키도록 하는 게 어떨까.

https://edykim.com/ko/post/summary-of-six-rules-for-designing-a-mongodb-schema/

핵심, join 비용 vs 업데이트 비용의 비교인 듯하다. 읽기가 많다면 join비용이 높을 것이고, 쓰기가 많다면 업데이트 비용이 높을 것이다.

지금은 일단 표시용 데이터가 필요하므로, 프로필쪽에서 한 스키마에 전부 포함하는 쪽으로 하려 한다.


Comments